From 2a189307eb0a6693a8d64b62e3845ca87c58d1eb Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Fri, 18 May 2012 08:34:18 -0400
Subject: [PATCH] - Added "Repeat Password" field to all forms where a password has to be set.

---
 interface/web/vm/templates/openvz_vm_edit.htm                |    2 
 interface/web/admin/lib/lang/en_remote_user.lng              |    3 
 interface/web/sites/templates/database_edit.htm              |    8 +
 interface/web/admin/lib/lang/de_users.lng                    |    3 
 interface/web/mailuser/lib/lang/en_mail_user_password.lng    |    4 +
 interface/web/sites/lib/lang/de_webdav_user.lng              |    3 
 interface/web/client/lib/lang/en_reseller.lng                |    3 
 interface/web/client/templates/client_edit_address.htm       |    8 +
 interface/web/sites/templates/web_folder_user_edit.htm       |    8 +
 interface/web/client/lib/lang/en_client.lng                  |    3 
 interface/web/sites/lib/lang/de_database.lng                 |    2 
 interface/web/sites/lib/lang/en_web_folder_user.lng          |    3 
 interface/web/sites/templates/web_domain_stats.htm           |    8 +
 interface/web/themes/default/css/screen/uni-form.css         |    4 
 interface/web/mail/lib/lang/en_mail_mailinglist.lng          |    3 
 interface/web/admin/lib/lang/en_users.lng                    |    3 
 interface/web/admin/templates/remote_user_edit.htm           |    8 +
 interface/web/tools/lib/lang/de_usersettings.lng             |    3 
 interface/web/sites/lib/lang/en_shell_user.lng               |    3 
 interface/web/admin/templates/users_user_edit.htm            |    8 +
 interface/web/sites/lib/lang/de_ftp_user.lng                 |    3 
 interface/web/sites/lib/lang/en_ftp_user.lng                 |    3 
 interface/web/js/scrigo.js.php                               |   17 ++++
 interface/web/vm/lib/lang/de_openvz_vm.lng                   |    1 
 interface/web/mailuser/templates/mail_user_password_edit.htm |    8 +
 interface/web/sites/lib/lang/en_database.lng                 |    3 
 interface/web/sites/lib/lang/de_shell_user.lng               |    3 
 interface/web/tools/templates/user_settings.htm              |   12 +-
 interface/web/sites/lib/lang/de_web_domain.lng               |    3 
 interface/web/admin/lib/lang/de_remote_user.lng              |    3 
 interface/web/sites/lib/lang/en_web_domain.lng               |    3 
 interface/web/client/lib/lang/de_reseller.lng                |    3 
 interface/web/client/lib/lang/de_client.lng                  |    3 
 interface/web/sites/templates/ftp_user_edit.htm              |    8 +
 interface/web/sites/templates/shell_user_edit.htm            |    8 +
 interface/web/mail/lib/lang/de_mail_mailinglist.lng          |    3 
 interface/web/vm/lib/lang/en_openvz_vm.lng                   |    1 
 interface/web/sites/lib/lang/de_web_folder_user.lng          |    3 
 interface/web/mail/lib/lang/de_mail_user.lng                 |    7 +
 interface/web/mail/lib/lang/en_mail_user.lng                 |    3 
 interface/web/mail/templates/mail_mailinglist_edit.htm       |    8 +
 interface/web/tools/lib/lang/en_usersettings.lng             |    3 
 interface/web/mail/templates/mail_user_mailbox_edit.htm      |    8 +
 interface/web/sites/lib/lang/en_webdav_user.lng              |    3 
 interface/web/client/templates/reseller_edit_address.htm     |    8 +
 interface/web/sites/templates/webdav_user_edit.htm           |    8 +
 interface/web/tools/user_settings.php                        |    2 
 47 files changed, 202 insertions(+), 26 deletions(-)

diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng
index 3bf7e62..036eda2 100644
--- a/interface/web/admin/lib/lang/de_remote_user.lng
+++ b/interface/web/admin/lib/lang/de_remote_user.lng
@@ -41,4 +41,7 @@
 $wb['DNS txt functions'] = 'DNS txt Funktionen';
 $wb['Mail mailing list functions'] = 'Mail mailinglist functions';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/admin/lib/lang/de_users.lng b/interface/web/admin/lib/lang/de_users.lng
index 6145d1f..1ead952 100644
--- a/interface/web/admin/lib/lang/de_users.lng
+++ b/interface/web/admin/lib/lang/de_users.lng
@@ -26,4 +26,7 @@
 $wb['startmodule_err'] = 'Start Modul ist nicht innerhalb der Module.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng
index 6883c11..c488f65 100644
--- a/interface/web/admin/lib/lang/en_remote_user.lng
+++ b/interface/web/admin/lib/lang/en_remote_user.lng
@@ -41,4 +41,7 @@
 $wb['DNS srv functions'] = 'DNS srv functions';
 $wb['DNS txt functions'] = 'DNS txt functions';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng
index 573f18a..c6a418e 100644
--- a/interface/web/admin/lib/lang/en_users.lng
+++ b/interface/web/admin/lib/lang/en_users.lng
@@ -26,4 +26,7 @@
 $wb["default_group_txt"] = 'Default Group';
 $wb["startmodule_err"] = 'Start module is not within modules.';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/admin/templates/remote_user_edit.htm b/interface/web/admin/templates/remote_user_edit.htm
index 945a297..6aa3a31 100644
--- a/interface/web/admin/templates/remote_user_edit.htm
+++ b/interface/web/admin/templates/remote_user_edit.htm
@@ -13,13 +13,19 @@
 
       <div class="ctrlHolder">
       	<label for="remote_password">{tmpl_var name='password_txt'}</label>
-        <input name="remote_password" id="password" value="{tmpl_var name='remote_password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="remote_password" id="password" value="{tmpl_var name='remote_password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
        	 <div class="ctrlHolder">
             <p class="label">{tmpl_var name='function_txt'}</p>
             <div class="multiField">
diff --git a/interface/web/admin/templates/users_user_edit.htm b/interface/web/admin/templates/users_user_edit.htm
index 40622ef..fffb766 100644
--- a/interface/web/admin/templates/users_user_edit.htm
+++ b/interface/web/admin/templates/users_user_edit.htm
@@ -11,13 +11,19 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="passwort">{tmpl_var name='passwort_txt'}</label>
-        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput"  onkeyup="pass_check(this.value)"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('passwort');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput"  onkeyup="pass_check(this.value);checkPassMatch('passwort','repeat_password');"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('passwort');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('passwort','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='modules_txt'}</p>
 					<div class="multiField">
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 88adbff..d2b5201 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -119,4 +119,7 @@
 $wb["dns_limits_txt"] = 'DNS-Limits';
 $wb["virtualization_limits_txt"] = 'Virtualisierungs-Limits';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index e938cde..8fe5e42 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -114,4 +114,7 @@
 $wb["dns_limits_txt"] = 'DNS-Limits';
 $wb["virtualization_limits_txt"] = 'Virtualisierungs-Limits';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index d8b3c2c..d809fcb 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -122,4 +122,7 @@
 $wb["dns_limits_txt"] = 'DNS Limits';
 $wb["virtualization_limits_txt"] = 'Virtualization Limits';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index ba2e7bb..4337216 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -116,4 +116,7 @@
 $wb["dns_limits_txt"] = 'DNS Limits';
 $wb["virtualization_limits_txt"] = 'Virtualization Limits';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
index 5799d86..2c37a97 100644
--- a/interface/web/client/templates/client_edit_address.htm
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -23,13 +23,19 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
       	<label for="language">{tmpl_var name='language_txt'}</label>
         <select name="language" id="language" class="selectInput withicons">
diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm
index 0458aa8..bccb22f 100644
--- a/interface/web/client/templates/reseller_edit_address.htm
+++ b/interface/web/client/templates/reseller_edit_address.htm
@@ -23,13 +23,19 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
       	<label for="language">{tmpl_var name='language_txt'}</label>
         <select name="language" id="language" class="selectInput withicons">
diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php
index cc6a80f..7e01c7d 100644
--- a/interface/web/js/scrigo.js.php
+++ b/interface/web/js/scrigo.js.php
@@ -558,6 +558,23 @@
 	newPWField.attr('id', passwordFieldID).val(password(10, true)).trigger('keyup');
 }
 
+function checkPassMatch(pwField1,pwField2){
+    var rpass = jQuery('#'+pwField2).val();
+    var npass = jQuery('#'+pwField1).val();
+    if(npass!= rpass) {
+		jQuery('#confirmpasswordOK').hide();
+        jQuery('#confirmpasswordError').show();
+		jQuery('button.positive').attr('disabled','disabled');
+		jQuery('.tabbox_tabs ul li a').attr('onclick','return false;');
+        return false;
+    } else {
+		jQuery('#confirmpasswordError').hide();
+        jQuery('#confirmpasswordOK').show();
+		jQuery('button.positive').removeAttr('disabled');
+		jQuery('.tabbox_tabs ul li a').removeAttr('onclick');
+    }
+}
+
 function getRandomInt(min, max){
     return Math.floor(Math.random() * (max - min + 1)) + min;
 }
diff --git a/interface/web/mail/lib/lang/de_mail_mailinglist.lng b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
index b9dbb7d..460d4f8 100644
--- a/interface/web/mail/lib/lang/de_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
@@ -13,4 +13,7 @@
 $wb['email_txt'] = 'Email';
 $wb['password_txt'] = 'Password';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passw&ouml;rter stimmen nicht &uuml;berein.';
+$wb['password_match_txt'] = 'Die Passw&ouml;rter stimmen &uuml;berein.';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index a85637b..38cfc9c 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -32,7 +32,7 @@
 $wb['move_junk_txt'] = 'Spam E-Mails in den Junk Ordner verschieben';
 $wb['name_txt'] = 'Name';
 $wb['name_optional_txt'] = '(optional)';
-$wb['autoresponder_active'] = 'Enable the autoresponder';
+$wb['autoresponder_active'] = 'Autoresponder aktivieren';
 $wb['cc_txt'] = 'Send copy to';
 $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address';
 $wb['login_error_unique'] = 'Login wird bereits verwendet.';
@@ -40,6 +40,9 @@
 $wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'Dieser Loginname ist nicht zulässig. Bitte verwenden Sie einen anderen Loginnamen oder die E-Mail-Adresse als Login.';
 $wb['domain_txt'] = 'Domain';
-$wb['now_txt'] = 'Now';
+$wb['now_txt'] = 'Jetzt';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passw&ouml;rter stimmen nicht &uuml;berein.';
+$wb['password_match_txt'] = 'Die Passw&ouml;rter stimmen &uuml;berein.';
 ?>
diff --git a/interface/web/mail/lib/lang/en_mail_mailinglist.lng b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
index 57c6fbb..d42c71b 100644
--- a/interface/web/mail/lib/lang/en_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
@@ -13,4 +13,7 @@
 $wb["email_txt"] = 'Email';
 $wb["password_txt"] = 'Password';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index b154973..f180dee 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -44,4 +44,7 @@
 $wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'This login is not allowed. Please enter a different login or use the mail address as login.';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/mail/templates/mail_mailinglist_edit.htm b/interface/web/mail/templates/mail_mailinglist_edit.htm
index 5072240..b7f31ef 100644
--- a/interface/web/mail/templates/mail_mailinglist_edit.htm
+++ b/interface/web/mail/templates/mail_mailinglist_edit.htm
@@ -60,13 +60,19 @@
 		</tmpl_if>
 		<div class="ctrlHolder">
 			<label for="password">{tmpl_var name='password_txt'}</label>
-			<input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+			<input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 		</div>
 		<div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
     </fieldset>
 
     <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm
index 9a89f1e..0bc7d87 100644
--- a/interface/web/mail/templates/mail_user_mailbox_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm
@@ -23,13 +23,19 @@
       </div></tmpl_if>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
 			<div class="ctrlHolder">
       	<label for="quota">{tmpl_var name='quota_txt'}</label>
         <input name="quota" id="quota" value="{tmpl_var name='quota'}" size="30" maxlength="255" type="text" class="textInput formLengthLimit" /><p class="formInputUnity">&nbsp;MB</p>
diff --git a/interface/web/mailuser/lib/lang/en_mail_user_password.lng b/interface/web/mailuser/lib/lang/en_mail_user_password.lng
index 77e6841..43c114a 100644
--- a/interface/web/mailuser/lib/lang/en_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/en_mail_user_password.lng
@@ -3,4 +3,8 @@
 $wb["password_txt"] = 'Password';
 $wb["password_strength_txt"] = 'Password strength';
 $wb["email_txt"] = 'Email';
+$wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
\ No newline at end of file
diff --git a/interface/web/mailuser/templates/mail_user_password_edit.htm b/interface/web/mailuser/templates/mail_user_password_edit.htm
index c8f5ba9..ed1d7ce 100644
--- a/interface/web/mailuser/templates/mail_user_password_edit.htm
+++ b/interface/web/mailuser/templates/mail_user_password_edit.htm
@@ -11,13 +11,19 @@
 	  </div>
 	  <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 	  </div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 	  </div>
+	  <div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
     </fieldset>
 
     <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/sites/lib/lang/de_database.lng b/interface/web/sites/lib/lang/de_database.lng
index dce54bb..778346e 100644
--- a/interface/web/sites/lib/lang/de_database.lng
+++ b/interface/web/sites/lib/lang/de_database.lng
@@ -23,4 +23,6 @@
 $wb['database_name_error_len'] = 'Datenbank Name - {db} - zu lang. Die max. Datenbank Namen Länge inkl. Präfix ist 64 Zeichen.';
 $wb['database_user_error_len'] = 'Datenbank Benutzername - {user}- zu lang. Die max. Datenbank Benutzernamen Länge inkl. Präfix ist 16 Zeichen.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb["btn_save_txt"] = 'Speichern';
+$wb["btn_cancel_txt"] = 'Abbrechen';
 ?>
diff --git a/interface/web/sites/lib/lang/de_ftp_user.lng b/interface/web/sites/lib/lang/de_ftp_user.lng
index 13af049..c977b65 100644
--- a/interface/web/sites/lib/lang/de_ftp_user.lng
+++ b/interface/web/sites/lib/lang/de_ftp_user.lng
@@ -28,4 +28,7 @@
 $wb['dir_dot_error'] = 'Kein .. im Pfad erlaubt.';
 $wb['dir_slashdot_error'] = 'Kein ./ im Pfad erlaubt.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_shell_user.lng b/interface/web/sites/lib/lang/de_shell_user.lng
index fb0a330..ccf204b 100644
--- a/interface/web/sites/lib/lang/de_shell_user.lng
+++ b/interface/web/sites/lib/lang/de_shell_user.lng
@@ -23,4 +23,7 @@
 $wb['dir_dot_error'] = 'Kein .. im Pfad erlaubt.';
 $wb['dir_slashdot_error'] = 'Kein ./ im Pfad erlaubt.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng
index 4fb8bed..15d7d19 100644
--- a/interface/web/sites/lib/lang/de_web_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_domain.lng
@@ -99,4 +99,7 @@
 $wb["pm_max_requests_error_regex"] = 'PHP-FPM pm.max_requests mu&szlig; eine ganze Zahl >= 0 sein.';
 $wb["pm_ondemand_hint_txt"] = 'Bitte beachten Sie, daß Ihre PHP-Version >= 5.3.9 sein muß, wenn Sie den ondemand Process-Manager nutzen möchten. Wenn Sie ondemand für eine ältere PHP-Version auswählen, wird PHP nicht mehr starten!';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_folder_user.lng b/interface/web/sites/lib/lang/de_web_folder_user.lng
index e53e007..1bea0dc 100644
--- a/interface/web/sites/lib/lang/de_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/de_web_folder_user.lng
@@ -5,4 +5,7 @@
 $wb['active_txt'] = 'Aktiv';
 $wb['folder_error_empty'] = 'Kein Web-Ordner ausgew�hlt.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passw�rter stimmen nicht �berein.';
+$wb['password_match_txt'] = 'Die Passw�rter stimmen �berein.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_webdav_user.lng b/interface/web/sites/lib/lang/de_webdav_user.lng
index e698775..6eef2e7 100644
--- a/interface/web/sites/lib/lang/de_webdav_user.lng
+++ b/interface/web/sites/lib/lang/de_webdav_user.lng
@@ -15,4 +15,7 @@
 $wb['dir_dot_error'] = 'Kein .. im Pfad erlaubt.';
 $wb['dir_slashdot_error'] = 'Kein ./ im Pfad erlaubt.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
diff --git a/interface/web/sites/lib/lang/en_database.lng b/interface/web/sites/lib/lang/en_database.lng
index 8c12d11..3d21df9 100644
--- a/interface/web/sites/lib/lang/en_database.lng
+++ b/interface/web/sites/lib/lang/en_database.lng
@@ -28,4 +28,7 @@
 $wb["btn_save_txt"] = 'Save';
 $wb["btn_cancel_txt"] = 'Cancel';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/sites/lib/lang/en_ftp_user.lng b/interface/web/sites/lib/lang/en_ftp_user.lng
index 580f829..a515cf8 100644
--- a/interface/web/sites/lib/lang/en_ftp_user.lng
+++ b/interface/web/sites/lib/lang/en_ftp_user.lng
@@ -29,4 +29,7 @@
 $wb['dir_dot_error'] = 'No .. in path allowed.';
 $wb['dir_slashdot_error'] = 'No ./ in path allowed.';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/sites/lib/lang/en_shell_user.lng b/interface/web/sites/lib/lang/en_shell_user.lng
index 1f7d61e..296019a 100644
--- a/interface/web/sites/lib/lang/en_shell_user.lng
+++ b/interface/web/sites/lib/lang/en_shell_user.lng
@@ -24,4 +24,7 @@
 $wb['dir_dot_error'] = 'No .. in path allowed.';
 $wb['dir_slashdot_error'] = 'No ./ in path allowed.';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng
index a6169ce..49a38d1 100644
--- a/interface/web/sites/lib/lang/en_web_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_domain.lng
@@ -99,4 +99,7 @@
 $wb["pm_max_requests_error_regex"] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
 $wb["pm_ondemand_hint_txt"] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_web_folder_user.lng b/interface/web/sites/lib/lang/en_web_folder_user.lng
index 684c0e9..c2a6710 100644
--- a/interface/web/sites/lib/lang/en_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/en_web_folder_user.lng
@@ -5,4 +5,7 @@
 $wb["active_txt"] = 'Active';
 $wb["folder_error_empty"] = 'No web folder selecetd.';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_webdav_user.lng b/interface/web/sites/lib/lang/en_webdav_user.lng
index af84617..099226c 100644
--- a/interface/web/sites/lib/lang/en_webdav_user.lng
+++ b/interface/web/sites/lib/lang/en_webdav_user.lng
@@ -16,4 +16,7 @@
 $wb['dir_dot_error'] = 'No .. in path allowed.';
 $wb['dir_slashdot_error'] = 'No ./ in path allowed.';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/sites/templates/database_edit.htm b/interface/web/sites/templates/database_edit.htm
index 9b0cd22..558e311 100644
--- a/interface/web/sites/templates/database_edit.htm
+++ b/interface/web/sites/templates/database_edit.htm
@@ -50,13 +50,19 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="database_password">{tmpl_var name='database_password_txt'}</label>
-        <input name="database_password" id="database_password" value="{tmpl_var name='database_password'}" size="30" maxlength="255" type="password" class="textInput formLengthHalf" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('database_password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="database_password" id="database_password" value="{tmpl_var name='database_password'}" size="30" maxlength="255" type="password" class="textInput formLengthHalf" onkeyup="pass_check(this.value);checkPassMatch('database_password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('database_password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('database_password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
 	    <tmpl_if name="edit_disabled">
 		<label for="database_charset_disabled">{tmpl_var name='database_charset_txt'}</label>
diff --git a/interface/web/sites/templates/ftp_user_edit.htm b/interface/web/sites/templates/ftp_user_edit.htm
index e07526f..9f9c6b1 100644
--- a/interface/web/sites/templates/ftp_user_edit.htm
+++ b/interface/web/sites/templates/ftp_user_edit.htm
@@ -18,13 +18,19 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
       	<label for="quota_size">{tmpl_var name='quota_size_txt'}</label>
         <input name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity">&nbsp;MB</p>
diff --git a/interface/web/sites/templates/shell_user_edit.htm b/interface/web/sites/templates/shell_user_edit.htm
index 0f2bc11..c138a86 100644
--- a/interface/web/sites/templates/shell_user_edit.htm
+++ b/interface/web/sites/templates/shell_user_edit.htm
@@ -26,13 +26,19 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
       	<label for="chroot">{tmpl_var name='chroot_txt'}</label>
         <select name="chroot" id="chroot" class="selectInput formLengthHalf">
diff --git a/interface/web/sites/templates/web_domain_stats.htm b/interface/web/sites/templates/web_domain_stats.htm
index 200cda2..7252a77 100644
--- a/interface/web/sites/templates/web_domain_stats.htm
+++ b/interface/web/sites/templates/web_domain_stats.htm
@@ -10,9 +10,15 @@
 	  </div>
 	  <div class="ctrlHolder">
       	<label for="stats_password">{tmpl_var name='stats_password_txt'}</label>
-        <input name="stats_password" id="stats_password" value="{tmpl_var name='stats_password'}" size="30" maxlength="255" type="password" class="textInput" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('stats_password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="stats_password" id="stats_password" value="{tmpl_var name='stats_password'}" size="15" maxlength="100" type="password" class="textInput" style="width:100px;" onkeyup="checkPassMatch('stats_password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('stats_password');">{tmpl_var name='generate_password_txt'}</a>
 	  </div>
 	  <div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('stats_password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
+	  <div class="ctrlHolder">
       	<label for="stats_type">{tmpl_var name='stats_type_txt'}</label>
         <select name="stats_type" id="stats_type" class="selectInput" >
 		  {tmpl_var name='stats_type'}
diff --git a/interface/web/sites/templates/web_folder_user_edit.htm b/interface/web/sites/templates/web_folder_user_edit.htm
index f466e52..8908493 100644
--- a/interface/web/sites/templates/web_folder_user_edit.htm
+++ b/interface/web/sites/templates/web_folder_user_edit.htm
@@ -17,8 +17,14 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="password">{tmpl_var name='password_txt'}</label>
-        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="checkPassMatch('password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
+		<div class="ctrlHolder">
+			<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='active_txt'}</p>
 					<div class="multiField">
diff --git a/interface/web/sites/templates/webdav_user_edit.htm b/interface/web/sites/templates/webdav_user_edit.htm
index 5bd7f82..0668d2e 100644
--- a/interface/web/sites/templates/webdav_user_edit.htm
+++ b/interface/web/sites/templates/webdav_user_edit.htm
@@ -26,7 +26,7 @@
 			</div>
 			<div class="ctrlHolder">
 				<label for="password">{tmpl_var name='password_txt'}</label>
-				<input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
+				<input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('password');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
 			<div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
@@ -34,6 +34,12 @@
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
 			<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('password','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
+			<div class="ctrlHolder">
 				<p class="label">{tmpl_var name='active_txt'}</p>
 				<div class="multiField">
 						{tmpl_var name='active'}
diff --git a/interface/web/themes/default/css/screen/uni-form.css b/interface/web/themes/default/css/screen/uni-form.css
index e9e592f..3411d56 100644
--- a/interface/web/themes/default/css/screen/uni-form.css
+++ b/interface/web/themes/default/css/screen/uni-form.css
@@ -100,7 +100,7 @@
 .uniForm .col.last{ width: 39%; /* <- Required property */ float: right; clear: none; margin-right: 0; }
 
 /* Messages */
-.uniForm #errorMsg{ background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px; }
+.uniForm #errorMsg, .confirmpassworderror{ background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px; }
 .uniForm .error{ background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; }
 
 .uniForm #errorMsg dt, .uniForm #errorMsg h3{ margin: 0 0 .5em 0; font-size: 100%; line-height: 100%; font-weight: bold; }
@@ -109,7 +109,7 @@
 .uniForm #errorMsg ol li{ margin: 0; padding: 2px; list-style-position: inside; border-bottom: 1px dotted #df7d7d; position: relative; }
 .uniForm .errorField{ color: #af4c4c; margin: 0 0 6px 0; padding: 4px; background: #ffbfbf; }
 
-.uniForm #OKMsg{ background: #C8FFBF; border: 1px solid #A2EF95; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px; }
+.uniForm #OKMsg, .confirmpasswordok{ background: #C8FFBF; border: 1px solid #A2EF95; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px; }
 .uniForm #OKMsg p{ margin: 0; }
 
 /*
diff --git a/interface/web/tools/lib/lang/de_usersettings.lng b/interface/web/tools/lib/lang/de_usersettings.lng
index 1b09f36..5783680 100644
--- a/interface/web/tools/lib/lang/de_usersettings.lng
+++ b/interface/web/tools/lib/lang/de_usersettings.lng
@@ -6,4 +6,7 @@
 $wb['Form to edit the user password and language.'] = 'Formular, um das Benutzerpasswort und die Sprache zu bearbeiten.';
 $wb['Settings'] = 'Einstellungen';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
+$wb['repeat_password_txt'] = 'Passwort wiederholen';
+$wb['password_mismatch_txt'] = 'Die Passw&ouml;rter stimmen nicht &uuml;berein.';
+$wb['password_match_txt'] = 'Die Passw&ouml;rter stimmen &uuml;berein.';
 ?>
diff --git a/interface/web/tools/lib/lang/en_usersettings.lng b/interface/web/tools/lib/lang/en_usersettings.lng
index f864944..efbe6c3 100644
--- a/interface/web/tools/lib/lang/en_usersettings.lng
+++ b/interface/web/tools/lib/lang/en_usersettings.lng
@@ -6,4 +6,7 @@
 $wb["Form to edit the user password and language."] = 'Form to edit the user password and language.';
 $wb["Settings"] = 'Settings';
 $wb['generate_password_txt'] = 'Generate Password';
+$wb['repeat_password_txt'] = 'Repeat Password';
+$wb['password_mismatch_txt'] = 'The passwords do not match.';
+$wb['password_match_txt'] = 'The passwords do match.';
 ?>
diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm
index e7c0144..773a0c3 100644
--- a/interface/web/tools/templates/user_settings.htm
+++ b/interface/web/tools/templates/user_settings.htm
@@ -7,17 +7,19 @@
     <fieldset class="inlineLabels">
       <div class="ctrlHolder">
       	<label for="passwort">{tmpl_var name='passwort_txt'}</label>
-        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value)"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('passwort');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value);checkPassMatch('passwort','repeat_password');"/>&nbsp;<a href="javascript:void(0);" onClick="generatePassword('passwort');">{tmpl_var name='generate_password_txt'}</a>
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='password_strength_txt'}</p>
 				<div id="passBar"></div>
 				<p class="formHint"><span id="passText">&nbsp;</span></p>
 			</div>
-      <div class="ctrlHolder">
-      	<label for="passwort2">{tmpl_var name='passwort_txt'}</label>
-        <input name="passwort2" id="passwort2" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"/>
-			</div>
+		<div class="ctrlHolder">
+      	<label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
+        <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('passwort','repeat_password');" />
+		</div>
+		<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+		<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
       <div class="ctrlHolder">
       	<label for="language">{tmpl_var name='language_txt'}</label>
         <select name="language" id="language" class="selectInput withicons">
diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php
index b67a1ab..70bbc69 100644
--- a/interface/web/tools/user_settings.php
+++ b/interface/web/tools/user_settings.php
@@ -83,7 +83,7 @@
 		
 		if($conf['demo_mode'] == true && $this->id <= 3) $app->tform->errorMessage .= 'This function is disabled in demo mode.';
 		
-		if($_POST['passwort'] != $_POST['passwort2']) {
+		if($_POST['passwort'] != $_POST['repeat_password']) {
 			$app->tform->errorMessage = $app->tform->lng('password_mismatch');
 		}
 		$_SESSION['s']['user']['language'] = $_POST['language'];
diff --git a/interface/web/vm/lib/lang/de_openvz_vm.lng b/interface/web/vm/lib/lang/de_openvz_vm.lng
index ee70a98..5880ce4 100644
--- a/interface/web/vm/lib/lang/de_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/de_openvz_vm.lng
@@ -37,5 +37,4 @@
 $wb['template_nameserver_error_empty'] = 'Nameserver ist leer.';
 $wb['Virtual server'] = 'Virtueller Server';
 $wb['Advanced'] = 'Erweitert';
-$wb['generate_password_txt'] = 'Passwort erzeugen';
 ?>
diff --git a/interface/web/vm/lib/lang/en_openvz_vm.lng b/interface/web/vm/lib/lang/en_openvz_vm.lng
index 1594fb4..ddd9903 100644
--- a/interface/web/vm/lib/lang/en_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/en_openvz_vm.lng
@@ -37,5 +37,4 @@
 $wb["template_nameserver_error_empty"] = 'Nameserver(s) is empty.';
 $wb["Virtual server"] = 'Virtual server';
 $wb["Advanced"] = 'Advanced';
-$wb['generate_password_txt'] = 'Generate Password';
 ?>
\ No newline at end of file
diff --git a/interface/web/vm/templates/openvz_vm_edit.htm b/interface/web/vm/templates/openvz_vm_edit.htm
index 671fd70..c661570 100644
--- a/interface/web/vm/templates/openvz_vm_edit.htm
+++ b/interface/web/vm/templates/openvz_vm_edit.htm
@@ -69,7 +69,7 @@
 			</div>
       <div class="ctrlHolder">
       	<label for="vm_password">{tmpl_var name='vm_password_txt'}</label>
-        <input name="vm_password" id="vm_password" value="{tmpl_var name='vm_password'}" size="30" maxlength="255" type="text" class="textInput" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('vm_password');">{tmpl_var name='generate_password_txt'}</a>
+        <input name="vm_password" id="vm_password" value="{tmpl_var name='vm_password'}" size="30" maxlength="255" type="text" class="textInput" />
 			</div>
       <div class="ctrlHolder">
 				<p class="label">{tmpl_var name='start_boot_txt'}</p>

--
Gitblit v1.9.1