<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
Copyright 1999-2004 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.
-->


<!-- 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=iso-8859-1"/>

                                                    <meta name="author" value="
			Sebastian Wagner
		">
            <meta name="email" value="sebawagner@apache.org">
            
           
                                    
                        
            <title>Apache OpenMeetings [Incubating] - Home</title>
            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
            <link rel="stylesheet" type="text/css" href="css/jquery-ui.css">
            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
            
            
			<!-- Add jQuery library -->
			<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
		
			<!-- Add mousewheel plugin (this is optional) -->
			<script type="text/javascript" src="js/jquery.mousewheel-3.0.6.pack.js"></script>
		
			<!-- Add fancyBox main JS and CSS files -->
			<script type="text/javascript" src="source/jquery.fancybox.js"></script>
			<link rel="stylesheet" type="text/css" href="source/jquery.fancybox.css" media="screen" />
			
			<!-- Add coinslider plugins -->
			<script type="text/javascript" src="js/coin-slider.min.js"></script>
		
			<!-- Add Button helper (this is optional) -->
			<link rel="stylesheet" type="text/css" href="source/helpers/jquery.fancybox-buttons.css?v=2.0.3" />
			<script type="text/javascript" src="source/helpers/jquery.fancybox-buttons.js?v=2.0.3"></script>
		
			<!-- Add Thumbnail helper (this is optional) -->
			<link rel="stylesheet" type="text/css" href="source/helpers/jquery.fancybox-thumbs.css?v=2.0.3" />
			<script type="text/javascript" src="source/helpers/jquery.fancybox-thumbs.js?v=2.0.3"></script>
			
			<script src="js/jquery.ui.core.js"></script>
			<script src="js/jquery.ui.widget.js"></script>
		
			<script src="js/jquery.ui.accordion.js"></script>
			
			<script>
			$(function() {
				$( "#accordion" ).accordion({
					autoHeight: false,
					navigation: true,
					navigationFilter: function () {
						var sidebarHrefArray = this.href.split("/");
    					var sideBarLastString = sidebarHrefArray[sidebarHrefArray.length - 1].toLowerCase();
						
						if (sideBarLastString.indexOf("#") == -1) {
							return false;
						}
						
												/* document.location.href */
						var currentSection = "";
						
						var currentLocation = "";
						var currentLink = "";
						if (false) {
						
						}
    										        					            					            	
					            	else if (document.location.href.indexOf("/index.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/index.html".substr(1, "/index.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/license.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/license.html".substr(1, "/license.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("http://www.apache.org/") > 0) {
					            		currentLocation = "General";
					            		currentLink = "http://www.apache.org/".substr(1, "http://www.apache.org/".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/downloads.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/downloads.html".substr(1, "/downloads.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/commercial-support.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/commercial-support.html".substr(1, "/commercial-support.html".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/installation.html") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "/installation.html".substr(1, "/installation.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/Upgrade.html") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "/Upgrade.html".substr(1, "/Upgrade.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("http://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+related+to+OpenMeetings") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "http://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+related+to+OpenMeetings".substr(1, "http://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+related+to+OpenMeetings".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/get-involved.html") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "/get-involved.html".substr(1, "/get-involved.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/team-list.html") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "/team-list.html".substr(1, "/team-list.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/mail-lists.html") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "/mail-lists.html".substr(1, "/mail-lists.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("http://cwiki.apache.org/confluence/display/OPENMEETINGS/") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "http://cwiki.apache.org/confluence/display/OPENMEETINGS/".substr(1, "http://cwiki.apache.org/confluence/display/OPENMEETINGS/".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/svn.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/svn.html".substr(1, "/svn.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("http://issues.apache.org/jira/browse/OPENMEETINGS") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "http://issues.apache.org/jira/browse/OPENMEETINGS".substr(1, "http://issues.apache.org/jira/browse/OPENMEETINGS".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/dependencies.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/dependencies.html".substr(1, "/dependencies.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/BuildInstructions.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/BuildInstructions.html".substr(1, "/BuildInstructions.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/JUnitTesting.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/JUnitTesting.html".substr(1, "/JUnitTesting.html".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/SoapRestAPI.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/SoapRestAPI.html".substr(1, "/SoapRestAPI.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/RestAPISample.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/RestAPISample.html".substr(1, "/RestAPISample.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/LdapAndADS.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/LdapAndADS.html".substr(1, "/LdapAndADS.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/voip-sip-integration.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/voip-sip-integration.html".substr(1, "/voip-sip-integration.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/ErrorsTable.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/ErrorsTable.html".substr(1, "/ErrorsTable.html".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/MoodlePlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/MoodlePlugin.html".substr(1, "/MoodlePlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/SakaiPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/SakaiPlugin.html".substr(1, "/SakaiPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/JiraPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/JiraPlugin.html".substr(1, "/JiraPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/ConfluencePlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/ConfluencePlugin.html".substr(1, "/ConfluencePlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/SugarCRMPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/SugarCRMPlugin.html".substr(1, "/SugarCRMPlugin.html".length);
					            	} 
					            	
					        				        		    										        					            				            						            			else if (document.location.href.indexOf("/ApacheDerbyConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/ApacheDerbyConfig.html".substr(1, "/ApacheDerbyConfig.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/IBMDB2Config.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/IBMDB2Config.html".substr(1, "/IBMDB2Config.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/OracleConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/OracleConfig.html".substr(1, "/OracleConfig.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/MySQLConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/MySQLConfig.html".substr(1, "/MySQLConfig.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/PostgresConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/PostgresConfig.html".substr(1, "/PostgresConfig.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/Internationalisation.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Internationalisation.html".substr(1, "/Internationalisation.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/LanguageEditor.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/LanguageEditor.html".substr(1, "/LanguageEditor.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/TimeZoneHandling.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/TimeZoneHandling.html".substr(1, "/TimeZoneHandling.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/EditTemplates.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/EditTemplates.html".substr(1, "/EditTemplates.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/PortSettings.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/PortSettings.html".substr(1, "/PortSettings.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/JVMPerformanceTuning.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/JVMPerformanceTuning.html".substr(1, "/JVMPerformanceTuning.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/themes-and-branding.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/themes-and-branding.html".substr(1, "/themes-and-branding.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/BrandingAndColors.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/BrandingAndColors.html".substr(1, "/BrandingAndColors.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/Dashboard.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Dashboard.html".substr(1, "/Dashboard.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/WebcamResolutions.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/WebcamResolutions.html".substr(1, "/WebcamResolutions.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/ConferenceRoomLayoutOptions.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/ConferenceRoomLayoutOptions.html".substr(1, "/ConferenceRoomLayoutOptions.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/WebappNamePath.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/WebappNamePath.html".substr(1, "/WebappNamePath.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/Navigation.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Navigation.html".substr(1, "/Navigation.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/CalendarAndTimezone.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/CalendarAndTimezone.html".substr(1, "/CalendarAndTimezone.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/CustomRoomTypeHowTo.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/CustomRoomTypeHowTo.html".substr(1, "/CustomRoomTypeHowTo.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/GeneralConfiguration.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/GeneralConfiguration.html".substr(1, "/GeneralConfiguration.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/RestrictedAccess.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/RestrictedAccess.html".substr(1, "/RestrictedAccess.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/RTMPSAndHTTPS.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/RTMPSAndHTTPS.html".substr(1, "/RTMPSAndHTTPS.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/OpenOfficeConverter.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/OpenOfficeConverter.html".substr(1, "/OpenOfficeConverter.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/FFMPEGVersionSwitch.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/FFMPEGVersionSwitch.html".substr(1, "/FFMPEGVersionSwitch.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/GetVersionInfo.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/GetVersionInfo.html".substr(1, "/GetVersionInfo.html".length);
						            	} 
				            							        				        		    					    					
    					currentLink = currentLink.toLowerCase();
    					currentLocation = currentLocation.toLowerCase();
    					
						return sideBarLastString == currentLink+"#"+currentLocation;
					}
				});
			});
			</script>
			
			<script type="text/javascript">
				$(document).ready(function() {
					$('.fancybox-buttons').fancybox({
						openEffect  : 'none',
						closeEffect : 'none',
		
						prevEffect : 'none',
						nextEffect : 'none',
		
						closeBtn  : false,
		
						helpers : {
							title : {
								type : 'inside'
							},
							buttons	: {}
						},
		
						afterLoad : function() {
							this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
						}
					});	
					$('#accordion a').each(function() {
				      var a = $(this);
				      var href = a.attr("href");
				      if (href.indexOf("#") == -1) {
				      	  var compareIt = href.substr(2, href.length);
					      if (document.location.href.indexOf(compareIt)!= -1) {
					       a.addClass('active');
					      }
				      }
				    });
					$('#coin-slider').coinslider({ width: 640,height: 400, 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" with="100%">
        	<div class="superbody" width="100%">
            <table border="0" width="100%" cellspacing="0">
                <!-- TOP IMAGE -->
                <tr>
                    <td align='LEFT'>
                    <td align="left">
<a href="http://incubator.apache.org/openmeetings/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
</td>
                    </td>
                    <td align='LEFT'>
                    <td width="80%" align="right" valign="top" >
	<a href="http://demo.openmeetings.de" target="_BLANK">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>
                    </td>
                </tr>
            </table>
            <table border="0" width="100%" cellspacing="4">
                <tr><td colspan="2">
                    <hr noshade="" size="1"/>
                </td></tr>

                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td width="20%" valign="top" nowrap="true">

                    <!-- 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" width="100%">
    
            	<h3><a href="#General">General</a></h3>
    	<div  width="100%">
	        	            	            	    <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  width="100%">
	        	            	            	    <a href="./installation.html">Installation</a>
<br/>
	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
<br/>
	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+related+to+OpenMeetings">Tutorials</a>
<br/>
	        		            	</div>
        	<h3><a href="#Community">Community</a></h3>
    	<div  width="100%">
	        	            	            	    <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  width="100%">
	        	            	            	    <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/>
	        		            	</div>
        	<h3><a href="#Integration">Integration</a></h3>
    	<div  width="100%">
	        	            	            	    <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="./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  width="100%">
	        	            	            	    <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="./ConfluencePlugin.html">Confluence Plugin</a>
<br/>
	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Configuration">Configuration</a></h3>
    	<div  width="100%">
	        	            	            	<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/>
	            			        		        	            	            	<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="./BrandingAndColors.html">Branding and Colors</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/>
	            			        		        	            	            	<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="./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>Misc</b><br/>
	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
<br/>
	            			        		            	</div>
        
    </div>

	<!--
            	<div class="ro"> 
		  <div class="lo">
		    <div class="ru"> 
		      <div class="lu"> 
		        <div class="inhalt"> 
    	
    		<font color="#000000" face="arial,helvetica,sanserif" size="2pt" >
        	<b>General</b>
        	</a>
        	<hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
		       <ul>
		        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./index.html">Home</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./license.html">License</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="http://www.apache.org/">ASF</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./downloads.html">Downloads</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./commercial-support.html">Commercial Support</a>
</li>
			        	</font>
		        			        		        </ul>
	        </div>
	      </div>
	    </div>
	  </div>
	</div>        
        	<div class="ro"> 
		  <div class="lo">
		    <div class="ru"> 
		      <div class="lu"> 
		        <div class="inhalt"> 
    	
    		<font color="#000000" face="arial,helvetica,sanserif" size="2pt" >
        	<b>Installation and Upgrade</b>
        	</a>
        	<hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
		       <ul>
		        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./installation.html">Installation</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./Upgrade.html">Upgrade</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+related+to+OpenMeetings">Tutorials</a>
</li>
			        	</font>
		        			        		        </ul>
	        </div>
	      </div>
	    </div>
	  </div>
	</div>        
        	<div class="ro"> 
		  <div class="lo">
		    <div class="ru"> 
		      <div class="lu"> 
		        <div class="inhalt"> 
    	
    		<font color="#000000" face="arial,helvetica,sanserif" size="2pt" >
        	<b>Community</b>
        	</a>
        	<hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
		       <ul>
		        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./get-involved.html">Get Involved</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./team-list.html">Committers</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./mail-lists.html">Mailing Lists</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
</li>
			        	</font>
		        			        		        </ul>
	        </div>
	      </div>
	    </div>
	  </div>
	</div>        
        	<div class="ro"> 
		  <div class="lo">
		    <div class="ru"> 
		      <div class="lu"> 
		        <div class="inhalt"> 
    	
    		<font color="#000000" face="arial,helvetica,sanserif" size="2pt" >
        	<b>Development</b>
        	</a>
        	<hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
		       <ul>
		        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./svn.html">Source Code</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./dependencies.html">Dependencies</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./BuildInstructions.html">Build Instructions</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./JUnitTesting.html">JUnit Testing</a>
</li>
			        	</font>
		        			        		        </ul>
	        </div>
	      </div>
	    </div>
	  </div>
	</div>        
        	<div class="ro"> 
		  <div class="lo">
		    <div class="ru"> 
		      <div class="lu"> 
		        <div class="inhalt"> 
    	
    		<font color="#000000" face="arial,helvetica,sanserif" size="2pt" >
        	<b>Integration</b>
        	</a>
        	<hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
		       <ul>
		        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./SoapRestAPI.html">SOAP/REST API</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./RestAPISample.html">REST API Sample</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./LdapAndADS.html">Ldap and ADS</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./voip-sip-integration.html">VoIP and SIP</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./ErrorsTable.html">Errors table</a>
</li>
			        	</font>
		        			        		        </ul>
	        </div>
	      </div>
	    </div>
	  </div>
	</div>        
        	<div class="ro"> 
		  <div class="lo">
		    <div class="ru"> 
		      <div class="lu"> 
		        <div class="inhalt"> 
    	
    		<font color="#000000" face="arial,helvetica,sanserif" size="2pt" >
        	<b>Plugins</b>
        	</a>
        	<hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
		       <ul>
		        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./MoodlePlugin.html">Moodle Plugin</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./SakaiPlugin.html">Sakai Plugin</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./JiraPlugin.html">Jira Plugin</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
</li>
			        	</font>
		        			        		            			            <font color="#000000" face="arial,helvetica,sanserif" size="2pt">
			            	<li>    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
</li>
			        	</font>
		        			        		        </ul>
	        </div>
	      </div>
	    </div>
	  </div>
	</div>        
        	<div class="ro"> 
		  <div class="lo">
		    <div class="ru"> 
		      <div class="lu"> 
		        <div class="inhalt"> 
    	
    		<font color="#000000" face="arial,helvetica,sanserif" size="2pt" >
        	<b>Configuration</b>
        	</a>
        	<hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
		       <ul>
		        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">DB Sample Configurations</font>
		            		<ul>
		            				            			<li>    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
</li>
		            				            			<li>    <a href="./IBMDB2Config.html">IBM DB2</a>
</li>
		            				            			<li>    <a href="./OracleConfig.html">Oracle</a>
</li>
		            				            			<li>    <a href="./MySQLConfig.html">MySQL</a>
</li>
		            				            			<li>    <a href="./PostgresConfig.html">Postgres</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">Localization and languages</font>
		            		<ul>
		            				            			<li>    <a href="./Internationalisation.html">Internationalisation</a>
</li>
		            				            			<li>    <a href="./LanguageEditor.html">LanguageEditor</a>
</li>
		            				            			<li>    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
</li>
		            				            			<li>    <a href="./EditTemplates.html">EditTemplates</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">NAT Port Settings</font>
		            		<ul>
		            				            			<li>    <a href="./PortSettings.html">Port settings</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">Performance</font>
		            		<ul>
		            				            			<li>    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">User Interface</font>
		            		<ul>
		            				            			<li>    <a href="./themes-and-branding.html">Themes</a>
</li>
		            				            			<li>    <a href="./BrandingAndColors.html">Branding and Colors</a>
</li>
		            				            			<li>    <a href="./Dashboard.html">Dashboard</a>
</li>
		            				            			<li>    <a href="./WebcamResolutions.html">Webcam resolutions</a>
</li>
		            				            			<li>    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">Customization</font>
		            		<ul>
		            				            			<li>    <a href="./WebappNamePath.html">Webapp name/path</a>
</li>
		            				            			<li>    <a href="./Navigation.html">Navigation</a>
</li>
		            				            			<li>    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
</li>
		            				            			<li>    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
</li>
		            				            			<li>    <a href="./GeneralConfiguration.html">General Configuration</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">Security</font>
		            		<ul>
		            				            			<li>    <a href="./RestrictedAccess.html">Restricted Access</a>
</li>
		            				            			<li>    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">Converters</font>
		            		<ul>
		            				            			<li>    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
</li>
		            				            			<li>    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		            		            	<li><font color="#000000" face="arial,helvetica,sanserif" size="2pt">Misc</font>
		            		<ul>
		            				            			<li>    <a href="./GetVersionInfo.html">Get version info</a>
</li>
		            				            		</ul>
		            	</li>
		        			        		        </ul>
	        </div>
	      </div>
	    </div>
	  </div>
	</div>        
        
     -->
     
    <br/>
    <img src="images/apache-incubator-logo-no-borders.png" alt="apache-incubator-logo-no-borders.png" border="0"/>
    
                    </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 [Incubating] - Features and overview"><strong>Apache OpenMeetings [Incubating] - Features and overview</strong></a>
          <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
        </font>
      </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 Incubator, 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>
        </p>
      </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>
          <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				<strong>
					First builds are available at
					<a href="https://builds.apache.org/job/openmeetings">builds.apache.org</a>
					(2012-03-15)
				</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>
        </p>
      </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>
          <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				<strong>Who we are</strong>
				<blockquote>
					<a href="team-list.html">List of committers</a>
					.
				</blockquote>
			</p>
                                                <p>
				<strong>Users!</strong>
				<blockquote>
					We'd love to have you involved. Check out the
					<a href="get-involved.html">Get involved</a>
					.
				</blockquote>
			</p>
                            </blockquote>
        </p>
      </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>
          <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
        </font>
      </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="fancybox-buttons" data-fancybox-group="button" href="images/Features_Screen_Conference_Room_Thumb.png">
								<img src="images/Features_Screen_Conference_Room_Thumb.png" alt="" width="250" 
									height="175" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/Features_Screen_Conference_Room_Thumb.png"
									alt="" width="250" 
									height="175" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					There are four options to use OpenMeetings audio/video functions,
					which you can select during a conference session.
					<ul>
						<blockquote>
							<li>audio + video</li>
							<li>audio only</li>
							<li>video only</li>
							<li>picture only</li>

						</blockquote>
					</ul>
					Additional you can change video-/audio-quality, choose multiple
					camera resolutions (4:3, 16:9 or 3:2)
					and choose your input devices.
				</text>
															</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="fancybox-buttons" data-fancybox-group="button" href="images/desktopsharing.png">
								<img src="images/desktopsharing.png" alt="" width="140" 
									height="150" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/desktopsharing.png"
									alt="" width="140" 
									height="150" />
									</p>
									 -->
																								<p>
							<a class="fancybox-buttons" data-fancybox-group="button" href="images/recordings_timeleine.png">
								<img src="images/recordings_timeleine.png" alt="" width="200" 
									height="115" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/recordings_timeleine.png"
									alt="" width="200" 
									height="115" />
									</p>
									 -->
																										</td>
				<td>
																																								<text>
					<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>
				</text>
															</td>
			</tr>
	    </tbody>
	</table>
                                                	<h3>File Explorer</h3>
	<table border="0">
		<tbody>
			<tr>
				<td style="text-align: center;" width="300">
																		<p>
							<a class="fancybox-buttons" data-fancybox-group="button" href="images/file_smal.png">
								<img src="images/file_smal.png" alt="" width="135" 
									height="200" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/file_smal.png"
									alt="" width="135" 
									height="200" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					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.
				</text>
															</td>
			</tr>
	    </tbody>
	</table>
                                                	<h3>Moderating System</h3>
	<table border="0">
		<tbody>
			<tr>
				<td style="text-align: center;" width="300">
																		<p>
							<a class="fancybox-buttons" data-fancybox-group="button" href="images/right_management.png">
								<img src="images/right_management.png" alt="" width="135" 
									height="216" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/right_management.png"
									alt="" width="135" 
									height="216" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					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>
				</text>
															</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="fancybox-buttons" data-fancybox-group="button" href="images/whiteboard.png">
								<img src="images/whiteboard.png" alt="" width="240" 
									height="165" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/whiteboard.png"
									alt="" width="240" 
									height="165" />
									</p>
									 -->
																								<p>
							<a class="fancybox-buttons" data-fancybox-group="button" href="images/chat.png">
								<img src="images/chat.png" alt="" width="240" 
									height="68" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/chat.png"
									alt="" width="240" 
									height="68" />
									</p>
									 -->
																										</td>
				<td>
																																								<text>
					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...)
				</text>
															</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="fancybox-buttons" data-fancybox-group="button" href="images/dashboard.png">
								<img src="images/dashboard.png" alt="" width="250" 
									height="130" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/dashboard.png"
									alt="" width="250" 
									height="130" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					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.
				</text>
															</td>
			</tr>
	    </tbody>
	</table>
                                                	<h3>Private message center</h3>
	<table border="0">
		<tbody>
			<tr>
				<td style="text-align: center;" width="300">
																		<p>
							<a class="fancybox-buttons" data-fancybox-group="button" href="images/privat_messages.png">
								<img src="images/privat_messages.png" alt="" width="230" 
									height="125" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/privat_messages.png"
									alt="" width="230" 
									height="125" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					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.
				</text>
															</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="fancybox-buttons" data-fancybox-group="button" href="images/calendar.png">
								<img src="images/calendar.png" alt="" width="200" 
									height="115" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/calendar.png"
									alt="" width="200" 
									height="115" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					<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>
				</text>
															</td>
			</tr>
	    </tbody>
	</table>
                                                	<h3>Polls and Votes</h3>
	<table border="0">
		<tbody>
			<tr>
				<td style="text-align: center;" width="300">
																		<p>
							<a class="fancybox-buttons" data-fancybox-group="button" href="images/poll.png">
								<img src="images/poll.png" alt="" width="250" 
									height="250" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/poll.png"
									alt="" width="250" 
									height="250" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					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
				</text>
															</td>
			</tr>
	    </tbody>
	</table>
                                                	<h3>Backup</h3>
	<table border="0">
		<tbody>
			<tr>
				<td style="text-align: center;" width="300">
																		<p>
							<a class="fancybox-buttons" data-fancybox-group="button" href="images/backup.png">
								<img src="images/backup.png" alt="" width="250" 
									height="60" />
							</a>
							<!--
							<img style="border: 1px solid black;"
									title="" src="images/backup.png"
									alt="" width="250" 
									height="60" />
									</p>
									 -->
																										</td>
				<td>
																													<text>
					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.
				</text>
															</td>
			</tr>
	    </tbody>
	</table>
                            </blockquote>
        </p>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                        </td>
                </tr>

                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#123465" size="-1"><em>
                    Copyright &#169; 2003-2012, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
            </div>
            </div>
        </body>
    </html>
<!-- end the processing -->






















