## OpenMeetings
## author swagner
## 11.05.2007
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.
-->
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='de' lang='de'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
<style type="text/css">

form, fieldset {
	margin: 0;
	padding: 0;
	}
	
fieldset { border: 1px solid #000; }

legend {
	padding: 0;
	color: #000;
}

input:focus, textarea:focus {
	color: #000; 
	background: #fff;
	outline: 1px solid black;
}


input, textarea, select {
	margin: 0;
	padding: 1px;
	position:absolute;
	left:440px;
	background: #ddd;
	font-size: 100%;
	font-family: inherit;
}

select { padding: 0; }

form.cmxform {
	width: 1024px;
	font-size: 1.1em;
	color: #333;
	}
	
form.cmxform legend { padding-left: 0; }
	
form.cmxform legend,
form.cmxform label { color: #333; }

form.cmxform fieldset {
	border: none;
	border-top: 1px solid #C9DCA6;
	}
	
form.cmxform fieldset fieldset { background: none; }
	
form.cmxform fieldset li {
	padding: 5px 10px 7px;
	}
	
form.cmxform fieldset {
  margin-bottom: 10px;
}
form.cmxform legend {
  padding: 0 2px;
  font-weight: bold;
}
form.cmxform label {
  display: inline-block;
  line-height: 1.8;
  vertical-align: top;
}
form.cmxform fieldset ol {
  margin: 0;
  padding: 0;
}
form.cmxform fieldset li {
  list-style: none;
  padding: 5px;
  margin: 0;
}
form.cmxform fieldset fieldset {
  border: none;
  margin: 3px 0 0;
}
form.cmxform fieldset fieldset legend {
  padding: 0 0 5px;
  font-weight: normal;
}
form.cmxform fieldset fieldset label {
  display: block;
  width: auto;
}
form.cmxform em {
  font-weight: bold;
  font-style: normal;
  color: #f00;
}
form.cmxform label {
  width: 420px; /* Width of labels */
}
form.cmxform fieldset fieldset label {
  margin-left: 123px; /* Width plus 3 (html space) */
}

</style>
</head>
<body>

<script language="JavaScript"> 
 
function checkEmail() 
{
    //alert(document.getElementById("useremail").value);
    
	if	(/^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+.)+([a-zA-Z]{1,3})$/.test(document.getElementById("useremail").value))
	{
		document.forms[0].submit();
	}
	else
	{
		alert("Please enter a valid EMail, for example name@mail.com");
	}
}
</script>

<h1>$APP_NAME - Installation</h1>

<form name="cmxform" id="form1" class="cmxform" method="post" action="?command=step2">

    <fieldset id="userData">
    
		<legend>Userdata</legend>    
		<li>
        <label for="username">Username</label>
    	<input name="username" id="username" size="27" 
    		title="Enter a username" type="text" /><br />
		</li><li>
        <label for="userpass">Userpass</label>
    	<input name="userpass" id="userpass" size="27" 
    		title="Enter a password" type="password" /><br />
		</li><li>
        <label for="useremail">EMail</label>
    	<input name="useremail" id="useremail" size="27" 
    		title="Enter a EMail" type="text" /><br/>
		</li><li> 
    	<label for="timeZone">User Time Zone</label>
    	<select name="timeZone" id="timeZone" 
    		size="1">
			#foreach( $key in $allTimeZones.keySet() )
			    <option value="$key">$allTimeZones.get($key)</option>
			#end	
	    </select><br/>
	    </li> 
    </fieldset>
    
    <fieldset id="userOrga" >
    
		<legend>Organisation(Domains)</legend>    
		<li>
        <label for="orgname">Name</label>
    	<input name="orgname" id="orgname" size="27" 
    		title="Enter a default Organisation" type="text" />   	
    	</li>    	
    </fieldset>    
    
    <fieldset id="userConf">
    
		<legend>Configuration</legend>    
		<li>
        <label for="configdefault">Allow self-registering (allow_frontend_register)</label>
    	<select name="configdefault" id="configdefault" size="1" 
    		>
	      	<option value="1" selected>Yes</option>
	        <option value="0">No</option>
	    </select><br />
	    </li><li>
        <label for="sendEmailAtRegister">Send Email to new registered Users (sendEmailAtRegister)</label>
    	<select name="sendEmailAtRegister" id="sendEmailAtRegister" size="1"
    		>
	      	<option value="1" selected>Yes</option>
	        <option value="0">No</option>
	    </select><br />	 
		</li><li>
        <label for="sendEmailWithVerficationCode">New Users need to verify their EMail (sendEmailWithVerficationCode)</label>
    	<select name="sendEmailWithVerficationCode" id="sendEmailWithVerficationCode" 
    		size="1">
	      	<option value="1" selected>Yes</option>
	        <option value="0">No</option>
	    </select><br />	 	       
		</li><li>
        <label for="createDefaultRooms">Default Rooms of all types will be created</label>
    	<select name="createDefaultRooms" id="createDefaultRooms"
    		size="1">
	      	<option value="1" selected>Yes</option>
	        <option value="0">No</option>
	    </select><br />	 	       
	    </li><li>
	    <label for="configreferer">Mail-Referer (system_email_addr)</label>
    	<input name="configreferer" id="configreferer" size="27" 
    		title="Enter a Referer" type="text" value="noreply@localhost" /><br />
    	</li><li>
        <label for="configsmtp">SMTP-Server (smtp_server)</label>
    	<input name="configsmtp" id="configsmtp" size="27" 
    		title="Enter a SMTP-Server" type="text" value="localhost" /><br/>
    	</li><li>
    	<label for="configsmtp">SMTP-Server Port(default Smtp-Server Port is 25) (smtp_port)</label>
    	<input name="configsmtpport" id="configsmtpport" size="27" 
    		title="Enter a SMTP-Server.Port normally 25" type="text" value="25" /><br/>
    	</li><li>
    	<label for="configmailuser">SMTP-Username (email_userpass)</label>
    	<input name="configmailuser" id="configmailuser" size="27" 
    		title="Enter the mail-username" type="text" /><br />
    	</li><li>
    	<label for="configmailpass">SMTP-Userpass (email_userpass)</label>
    	<input name="configmailpass" id="configmailpass" size="27" 
    		title="Enter the mail-userpass" type="password" /><br/>
    	</li><li>
        <label for="mailusetls">Enable TLS in Mail Server Auth</label>
    	<select name="mailusetls" id="mailusetls" 
    		size="1">
	      	<option value="1">Yes</option>
	        <option value="0" selected>No</option>
	    </select><br />	 	       
	    </li><li>
        <label for="replyToOrganizer">Set inviter's email address as ReplyTo in email invitations (inviter.email.as.replyto)</label>
    	<select name="replyToOrganizer" id="replyToOrganizer" size="1"
    		>
	      	<option value="1" selected>Yes</option>
	        <option value="0">No</option>
	    </select><br />	 
	    </li><li> 
    	<label for="configdefaultLang">Default Language</label>
    	<select name="configdefaultLang" id="configdefaultLang" 
    		size="1">
			#foreach( $key in $allLanguages.keySet() )
			    <option value="$key">$allLanguages.get($key)</option>
			#end	
	    </select><br/>
	    </li> 
	    <li> 
    	<label for="default_export_font">Default Font for Export [default_export_font]</label>
    	<select name="default_export_font" id="default_export_font" 
    		size="1">
			#foreach( $key1 in $allFonts.keySet() )
			    <option value="$key1">$allFonts.get($key1)</option>
			#end	
	    </select><br/>
	    </li>      	
    </fieldset>  
    
    <fieldset id="userConf1">
		<legend>Converters</legend>
	<li>
	        <label for="swftools_zoom">SWFTools Zoom</label>
	    	<input name="swftools_zoom" id="swftools_zoom" size="4"  value="72"
		title="Enter the dpi that swftools will use for PDF to SWF conversion" type="text" 	 />   	
	    	<p><i>You can test if swftools is installed into system path by opening a shell or cmd-prompt and type pdf2swf<br/>
	    		Enter the dpi that swftools will use for PDF to SWF conversion. Default is 72 dpi.<br/>
	    		see also <a href="http://incubator.apache.org/openmeetings/installation.html" target="_blank">Installation</a></i></p>
		
        </li>
	<li>
	        <label for="swftools_jpegquality">SWFTools JPEG Quality</label>
	    	<input name="swftools_jpegquality" id="swftools_jpegquality" size="3" value="85" 
		title="Enter the quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)"  type="text" />   	
	    	<p>
		<i>You can test if swftools is installed into system path by opening a shell or cmd-prompt and type pdf2swf<br/>
	    		Enter the quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)<br/>
	    		see also <a href="http://incubator.apache.org/openmeetings/installation.html" target="_blank">Installation</a></i>
		</p>
        </li>
    
		<li>
	        <label for="swftools_path">SWFTools Path</label>
	    	<input name="swftools_path" id="swftools_path" size="27" title="Enter the path to swftools for example C:/swftools (Windows) or leave blank if swftools is a known to your system path" type="text" />   	
	    	<p><i>You can test if swftools is installed into system path by opening a shell or cmd-prompt and type pdf2swf<br/>
	    		If this shows a list of options leave this field blank otherwise you have to specify the path to pdf2swf on your system<br/>
	    		see also <a href="http://incubator.apache.org/openmeetings/installation.html" target="_blank">Installation</a></i></p>
        </li>
        <li>
	        <label for="imagemagick_path">ImageMagick Path</label>
	    	<input name="imagemagick_path" id="imagemagick_path" size="27" title="Enter the path to ImageMagick, leave blank if ImageMagick is successfully installed to system-path" type="text" />   	
	    	<p><i>see also <a href="http://incubator.apache.org/openmeetings/installation.html" target="_blank">Installation</a></i></p>	
    	</li>
    	<li>
	        <label for="ffmpeg_path">FFMPEG Path</label>
	        <input name="ffmpeg_path" id="ffmpeg_path" size="27" title="Enter the path to FFMPEG, leave blank if FFMPEG is successfully installed to system-path" type="text" />    
	        <p><i>see also <a href="http://incubator.apache.org/openmeetings/installation.html" target="_blank">Installation</a></i></p>  
        </li>
        <li>
        <label for="sox_path">SoX Path</label>
	        <input name="sox_path" id="sox_path" size="27" title="Enter the path to SoX, leave blank if SoX is successfully installed to system-path" type="text" />    
	        <p><i>see also <a href="http://incubator.apache.org/openmeetings/installation.html" target="_blank">Installation</a></i></p>  
        </li>
		<li>
	        <label for="jod_path">JOD Path</label>
	        <input name="jod_path" id="jod_path" size="27" value="./jodconverter-core-3.0-beta-4/lib" 
			title="The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar" type="text" />    
	        <p><i>see also <a href="http://incubator.apache.org/openmeetings/installation.html" target="_blank">Installation</a></i></p>  
        </li>
		<li>
	        <label for="office_path">OpenOffice/LibreOffice Path for jodconverter</label>
	        <input name="office_path" id="office_path" size="27" value="" 
			title="The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically" type="text" />    
	        <p>The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation</p>  
        </li>
    </fieldset>      
    
    <fieldset id="userConf2">
    
		<legend>Crypt Type</legend>    
		<li>
        <label for="crypt_ClassName">Crypt Class</label>
    	<input name="crypt_ClassName" id="crypt_ClassName" size="27" 
    		type="text" 
    		title="Enter the Class name of the Encryption Class. DO NOT ALTER THIS IF YOU ARE NOT SURE"
    		value="org.openmeetings.utils.crypt.MD5Implementation" />  	
		</li>
    	<p><i>
	    	You can use this default crypt type which is equal to PHP-MD5 function or BSD-Style<BR/>
	    	encryption by using:<b>org.openmeetings.utils.crypt.MD5CryptImplementation</b><BR/>
	    	for more information or to write your own Crypt-Style see:<BR/>
			<a href="http://code.google.com/p/openmeetings/wiki/CustomCryptMechanism" target="_blank">CustomCryptMechanism</a><BR/>
			You can edit this value later BUT previous created Users and Sessions might be not usable anymore<BR/>
    	</i></p>
        
    </fieldset>
    
    <fieldset id="ScreenViewer">
    
		<legend>Screen Viewer</legend>    
		<li>
        <label for="screen_viewer">Screenviewer Config</label>
    	<select name="screen_viewer" id="screen_viewer" size="1">
    		<option value="4" selected>Rtmp Viewer (Standard)</option>
	    </select><br />	
		</li>
    	<p><i>
	    	The standard Screenviewer is optimized for low-bandwidth areas - You have the possibility of<BR/>
	    	altering the quality of the screencapture,ie.<BR/>
	    	The jrDesktop alternative starts immediately without GUI, just stoppable via SysTray Icon, but offers<BR/>
	    	a higher speed tranferring the screencaptures to the whiteboard<BR/>
	    	The RTP Sharer transfers Desktop Data as RTP Stream to Server. Best performance and quality is reached using 1024x768 as Screen Resolution<BR/>
	    	
    	</i></p>
        
    </fieldset>

    <fieldset id="red5sip">
        <legend>red5SIP Configuration</legend>

        <li>
        <label for="red5sip_enable">Enable SIP</label>
    	<select name="red5sip_enable" id="red5sip_enable" size="1">
    		<option value="yes">Yes</option>
	      	<option value="no" selected>No</option>
	    </select><br />
	    </li>
		<p><i>
            Enable red5SIP integration
        </i></p>
        <br />

        <li>
        <label for="red5sip_room_prefix">SIP rooms prefix</label>
        <input name="red5sip_room_prefix" id="red5sip_room_prefix" size="27" title="" type="text" value="400" />
        <p><i>Prefix for phone number of conference rooms</i></p>
        </li>

        <li>
        <label for="red5sip_exten_context">SIP extensions context</label>
        <input name="red5sip_exten_context" id="red5sip_exten_context" size="27" title="" type="text" value="rooms" />
        <p><i>Context of Asterisk extensions</i></p>
        </li>

    </fieldset>

    <fieldset id="sip">
    
		<legend>SIP Applet Configuration</legend>    
		
		<li>
        <label for="sip_enable">Enable SIP</label>
    	<select name="sip_enable" id="sip_enable" size="1">
    		<option value="yes">Yes</option>
	      	<option value="no" selected>No</option>
	    </select><br />	
	    </li>
		<p><i>
            Enable to load the SIP Applet in the Client and 
            call the SIP Applet whenever you enter a Room
        </i></p>
        <br />  
        
		<li>
        <label for="sip_realm">SIP Realm</label>
        <input name="sip_realm" id="sip_realm" size="27" title="" type="text" />    
        <p><i>So called *Domain of the SIP Provider*</i></p>  
        </li>
        
    	<li>
        <label for="sip_port">SIP Port</label>
        <input name="sip_port" id="sip_port" size="27" title="" type="text" />    
        <p><i>SIP Port</i></p>  
        </li>
        
        <li>
        <label for="sip_proxyname">SIP Proxy</label>
        <input name="sip_proxyname" id="sip_proxyname" size="27" title="" type="text" />    
        <p><i>SIP Proxy name (this is the outbound proxy)</i></p>  
        </li>
        
        <li>
        <label for="sip_tunnel">SIP Tunnel</label>
        <input name="sip_tunnel" id="sip_tunnel" size="27" title="" type="text" />    
        <p><i>SIP Tunnel IP + Port, format domain:port, for example 10.0.0.0:443</i></p>  
        </li>
        
        <li>
        <label for="sip_codebase">SIP Codebase</label>
        <input name="sip_codebase" id="sip_codebase" size="27" title="" type="text" />    
        <p><i>The Base-URL to load the Ringtone from</i></p>  
        </li>
        
        <li>
        <label for="sip_forcetunnel">SIP Forcetunnel</label>
        <select name="sip_forcetunnel" id="sip_forcetunnel" size="1">
            <option value="true" selected>Yes</option>
            <option value="false">No</option>
        </select><br /> 
        </li>
        <p><i>
            Force usage of the tunnel
        </i></p>
        
    </fieldset>   
    
    <fieldset id="openxg">
    
        <legend>OpenXG / OpenSIPg Configuration</legend>    
        
        <li>
        <label for="sip_openxg_enable">Enable OpenXG Wrapper URL</label>
        <select name="sip_openxg_enable" id="sip_openxg_enable" size="1">
            <option value="yes">Yes</option>
            <option value="no" selected>No</option>
        </select><br /> 
        </li>
        <p><i>
            Enable the OpenXG XML-RPC Gateway through the Wrapper URL
        </i></p>
        <br />  
        
        <li>
        <label for="openxg_wrapper_url">OpenXG XML-RPC Wrapper URL</label>
        <input name="openxg_wrapper_url" id="openxg_wrapper_url" size="27" title="" type="text" />    
        <p><i>OpenXG XML-RPC Wrapper URL, the Wrapper can only 
            be located on 127.0.01 by default,
            for example http://127.0.0.1:5080/rpc_client/rpc_gateway_wrapper.php </i></p>  
        </li>
        
        <li>
        <label for="openxg_client_id">OpenXG Client ID</label>
        <input name="openxg_client_id" id="openxg_client_id" size="27" title="" type="text" />    
        <p><i>OpenXG XML-RPC Client ID </i></p>  
        </li>
        
        <li>
        <label for="openxg_client_secret">OpenXG Client secret</label>
        <input name="openxg_client_secret" id="openxg_client_secret" size="27" title="" type="text" />    
        <p><i>OpenXG XML-RPC Client Secret </i></p>  
        </li>
        
        <li>
        <label for="openxg_client_domain">OpenXG Domain</label>
        <input name="openxg_client_domain" id="openxg_client_domain" size="27" title="" type="text" />    
        <p><i>OpenXG Domain </i></p>  
        </li>
        
        <li>
        <label for="openxg_community_code">OpenXG Community Code</label>
        <input name="openxg_community_code" id="openxg_community_code" size="27" title="" type="text" />    
        <p><i>OpenXG Community Code </i></p>  
        </li>
        
        <li>
        <label for="openxg_language_code">OpenXG Language Code</label>
        <input name="openxg_language_code" id="openxg_language_code" size="27" title="" type="text" />    
        <p><i>OpenXG Language Code For example fi for Finland</i></p>  
        </li>
        
        <li>
        <label for="openxg_adminid">OpenXG Admin ID</label>
        <input name="openxg_adminid" id="openxg_adminid" size="27" title="" type="text" />    
        <p><i>OpenXG Admin ID </i></p>  
        </li>
        
    </fieldset>   
    
    <fieldset id="sip_phone_configuration">
    
        <legend>SIP Phone Range Configuration</legend>    
        
        <li>
        <label for="sip_language_phonecode">Phone language code</label>
        <input name="sip_language_phonecode" id="sip_language_phonecode" size="27" title="" type="text" />    
        <p><i>For example +358 for Finland</i></p>  
        </li>
        
        <li>
        <label for="sip_phonerange_start">Phone range start</label>
        <input name="sip_phonerange_start" id="sip_phonerange_start" size="27" title="" type="text" />    
        <p><i>The first number in the Range of Phone Numbers in national format</i></p>  
        </li>
        
        <li>
        <label for="sip_phonerange">Number of allocated Numbers</label>
        <input name="sip_phonerange" id="sip_phonerange" size="27" title="" type="text" />    
        <p><i>Amount of numbers in the Phone Range available</i></p>  
        </li>
        
    </fieldset>
        	  
        	
    <fieldset>
        <legend>Submit</legend> 
        <input name="Submit" value="INSTALL" 
    		title="Submit" type="button"  onclick="checkEmail();"/>
    </fieldset>	
	
</form>

</body>
</html>
