<!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=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.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.7.1.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.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("https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools".substr(1, "https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/CommandLineAdmin.html") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "/CommandLineAdmin.html".substr(1, "/CommandLineAdmin.html".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("/ManualTesting.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/ManualTesting.html".substr(1, "/ManualTesting.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/ReleaseGuide.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/ReleaseGuide.html".substr(1, "/ReleaseGuide.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/WebsiteGuide.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/WebsiteGuide.html".substr(1, "/WebsiteGuide.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("/JoomlaPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/JoomlaPlugin.html".substr(1, "/JoomlaPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/DrupalPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/DrupalPlugin.html".substr(1, "/DrupalPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/BitrixPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/BitrixPlugin.html".substr(1, "/BitrixPlugin.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("/RedminePlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/RedminePlugin.html".substr(1, "/RedminePlugin.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("/MSSQLConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/MSSQLConfig.html".substr(1, "/MSSQLConfig.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("/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("/HotKeys.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/HotKeys.html".substr(1, "/HotKeys.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("/CustomCryptMechanism.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/CustomCryptMechanism.html".substr(1, "/CustomCryptMechanism.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("/Clustering.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Clustering.html".substr(1, "/Clustering.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').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
					$('#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" style="width: 100%;">
        	<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="./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>
					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>
																	<div>
													<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>
																	<div>
																	<div>
													<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>
																	<div>
													<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>
																	<div>
													<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>
																	<div>
																	<div>
													<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>
																	<div>
													<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>
																	<div>
													<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>
																	<div>
													<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>
																	<div>
													<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" 
									height="60" />
							</a>
																										</td>
				<td>
											<div>
																	<div>
													<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-2013, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
            </div>
            </div>
        </body>
    </html>
<!-- end the processing -->






















