From 2d0ebade46d8a5942adb3e2ce816840a6ae16c1e Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Tue, 13 Jan 2015 09:36:31 -0500
Subject: [PATCH] - Fixed column sorting - cleaned up some javascript

---
 interface/web/js/scrigo.js.php |  879 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 453 insertions(+), 426 deletions(-)

diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php
index beb247c..f21fc9d 100644
--- a/interface/web/js/scrigo.js.php
+++ b/interface/web/js/scrigo.js.php
@@ -1,5 +1,4 @@
 <?php
-session_start();
 include '../../lib/config.inc.php';
 header('Content-Type: text/javascript; charset=utf-8'); // the config file sets the content type header so we have to override it here!
 require_once '../../lib/app.inc.php';
@@ -9,46 +8,48 @@
 $app->uses('ini_parser,getconf');
 $server_config_array = $app->getconf->get_global_config();
 ?>
-var pageFormChanged = false;
-var tabChangeWarningTxt = '';
-var tabChangeDiscardTxt = '';
-var tabChangeWarning = false;
-var tabChangeDiscard = false;
-var requestsRunning = 0;
-var indicatorPaddingH = -1;
-var indicatorPaddingW = -1;
-var indicatorCompleted = false;
-var registeredHooks = new Array();
-redirect = '';
 
-function reportError(request) {
-	/* Error reporting is disabled by default as some browsers like safari
-	   sometimes throw errors when a ajax request is delayed even if the
-	   ajax request worked. */
+var ISPConfig = {
+	pageFormChanged: false,
+	tabChangeWarningTxt: '',
+	tabChangeDiscardTxt: '',
+	tabChangeWarning: false,
+	tabChangeDiscard: false,
+	requestsRunning: 0,
+	indicatorPaddingH: -1,
+	indicatorPaddingW: -1,
+	indicatorCompleted: false,
+	registeredHooks: new Array(),
+	redirect: '',
 
-	/*alert(request);*/
-}
+	reportError: function(request) {
+		/* Error reporting is disabled by default as some browsers like safari
+		   sometimes throw errors when a ajax request is delayed even if the
+		   ajax request worked. */
 
-function registerHook(name, callback) {
-    if(!registeredHooks[name]) registeredHooks[name] = new Array();
-    var newindex = registeredHooks[name].length;
-    registeredHooks[name][newindex] = callback;
-}
+		/*alert(request);*/
+	},
+	
+	registerHook: function(name, callback) {
+		if(!registeredHooks[name]) registeredHooks[name] = new Array();
+		var newindex = registeredHooks[name].length;
+		registeredHooks[name][newindex] = callback;
+	},
+	
+	callHook: function(name, params) {
+		if(!registeredHooks[name]) return;
+		for(var i = 0; i < registeredHooks[name].length; i++) {
+			var callback = registeredHooks[name][i];
+			callback(name, params);
+		}
+	},
+	
+	resetFormChanged: function() {
+		pageFormChanged = false;
+	},
 
-function callHook(name, params) {
-    if(!registeredHooks[name]) return;
-    for(var i = 0; i < registeredHooks[name].length; i++) {
-        var callback = registeredHooks[name][i];
-        callback(name, params);
-    }
-}
-
-function resetFormChanged() {
-    pageFormChanged = false;
-}
-
-function showLoadIndicator() {
-    document.body.style.cursor = 'wait';
+	showLoadIndicator: function() {
+		document.body.style.cursor = 'wait';
 
 <?php
 if($server_config_array['misc']['use_loadindicator'] == 'y'){
@@ -76,394 +77,391 @@
 <?php
 }
 ?>
+	},
+
+	hideLoadIndicator: function() {
+		document.body.style.cursor = '';
+
+		requestsRunning -= 1;
+		if(requestsRunning < 1) {
+			requestsRunning = 0; // just for the case...
+			if(indicatorCompleted == true) jQuery('#ajaxloader').fadeOut('fast', function() { jQuery('#ajaxloader').hide(); } );
+		}
+	}
+
+	onAfterSideNavLoaded: function() {
+	<?php
+if($server_config_array['misc']['use_combobox'] == 'y'){
+?>
+		$('#sidebar').find("select:not(.chosen-select)").select2({
+			placeholder: '',
+			width: 'element',
+			selectOnBlur: true,
+			allowClear: true,
+		});
+<?php
 }
+?>
+	},
 
-function hideLoadIndicator() {
-    document.body.style.cursor = '';
-
-    requestsRunning -= 1;
-    if(requestsRunning < 1) {
-        requestsRunning = 0; // just for the case...
-        if(indicatorCompleted == true) jQuery('#ajaxloader').fadeOut('fast', function() { jQuery('#ajaxloader').hide(); } );
-    }
-}
-
-function onAfterContentLoad() {
+	onAfterContentLoad: function(url, data) {
+		if(!data) data = '';
+		else data = '&' + data;
 <?php
 if($server_config_array['misc']['use_combobox'] == 'y'){
 ?>
-    $('#pageContent').find("select").combobox();
+
+
+		$('#pageContent').find("select:not(.chosen-select)").select2({
+			placeholder: '',
+			width: 'element',
+			selectOnBlur: true,
+			allowClear: true,
+			formatResult: function(o) {
+				if(o.id && $(o.element).parent().hasClass('flags')) return '<span class="flags flag-' + o.id.toLowerCase() + '">' + o.text + '</span>';
+				else return o.text;
+			},
+			formatSelection: function(o) {
+				if(o.id && $(o.element).parent().hasClass('flags')) return '<span class="flags flag-' + o.id.toLowerCase() + '">' + o.text + '</span>';
+				else return o.text;
+			}
+		}).on('change', function(e) {
+			if (jQuery("#pageForm .table #Filter").length > 0) {
+				jQuery("#pageForm .table #Filter").trigger('click');
+			}
+		});
+		/* TODO: find a better way! */
+		//$('.chosen-select').chosen({no_results_text: "<?php echo $wb['globalsearch_noresults_text_txt']; ?>", width: '300px'});
 <?php
 }
 ?>
-	callHook('onAfterContentLoad');
-}
+		callHook('onAfterContentLoad', {'url': url, 'data': data });
+	},
 
-function loadContentRefresh(pagename) {
-
-  if(document.getElementById('refreshinterval').value > 0) {
-	var pageContentObject2 = jQuery.ajax({	type: "GET",
-											url: pagename,
-											data: "refresh="+document.getElementById('refreshinterval').value,
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-                                                hideLoadIndicator();
-												jQuery('#pageContent').html(jqXHR.responseText);
-                                                onAfterContentLoad();
-                                                pageFormChanged = false;
-											},
-											error: function() {
-                                                hideLoadIndicator();
-												reportError('Ajax Request was not successful.'+pagename);
-											}
-										});
-  	setTimeout( "loadContentRefresh('"+pagename+"&refresh="+document.getElementById('refreshinterval').value+"')", document.getElementById('refreshinterval').value*1000*60 );
-  }
-}
-
-function capp(module, redirect) {
-	var submitFormObj = jQuery.ajax({		type: "GET",
-											url: "capp.php",
-											data: "mod="+module+((redirect != undefined) ? '&redirect='+redirect : ''),
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-												if(jqXHR.responseText != '') {
-													if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
-														var parts = jqXHR.responseText.split(':');
-														loadContent(parts[1]);
-													} else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
-														var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
-														document.location.href = newUrl;
-													} else {
-														//alert(jqXHR.responseText);
-													}
-												}
-												loadMenus();
-                                                hideLoadIndicator();
-											},
-											error: function() {
-                                                hideLoadIndicator();
-												reportError('Ajax Request was not successful.'+module);
-											}
-									});
-}
-
-function submitLoginForm(formname) {
-    //* Validate form. TODO: username and password with strip();
-    var frm = document.getElementById(formname);
-    var userNameObj = frm.username;
-    if(userNameObj.value == ''){
-        userNameObj.focus();
-        return;
-    }
-    var passwordObj = frm.passwort;
-    if(passwordObj.value == ''){
-        passwordObj.focus();
-        return;
-    }
-
-	$('#dummy_username').val(userNameObj.value);
-	$('#dummy_passwort').val(passwordObj.value);
-	$('#dummy_login_form').submit();
-
-	var submitFormObj = jQuery.ajax({		type: "POST",
-											url: "content.php",
-											data: jQuery('#'+formname).serialize(),
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-												if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
-													var parts = jqXHR.responseText.split(':');
-													//alert(parts[1]);
-													loadContent(parts[1]);
-													//redirect = parts[1];
-													//window.setTimeout('loadContent(redirect)', 1000);
-												} else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) {
-													// Go to the login page
-													document.location.href = 'index.php';
-												} else {
-													jQuery('#pageContent').html(jqXHR.responseText);
-                                                    onAfterContentLoad();
-                                                    pageFormChanged = false;
-												}
-												loadMenus();
-                                                hideLoadIndicator();
-											},
-											error: function() {
-                                                hideLoadIndicator();
-												reportError('Ajax Request was not successful.110');
-											}
-									});
-	/*
-	if(redirect != '') {
-		loadContent(redirect);
-		redirect = '';
-	}
-	document.getElementById('footer').innerHTML = 'Powered by <a href="http://www.ispconfig.org" target="_blank">ISPConfig</a>';
-	*/
-
-}
-
-function submitForm(formname,target) {
-	var submitFormObj = jQuery.ajax({		type: "POST",
-											url: target,
-											data: jQuery('#'+formname).serialize(),
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-												if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
-													var parts = jqXHR.responseText.split(':');
-													//alert(parts[1]);
-													loadContent(parts[1]);
-													//redirect = parts[1];
-													//window.setTimeout('loadContent(redirect)', 1000);
-												} else {
-													jQuery('#pageContent').html(jqXHR.responseText);
-                                                    onAfterContentLoad();
-                                                    pageFormChanged = false;
-												}
-                                                hideLoadIndicator();
-											},
-											error: function(jqXHR, textStatus, errorThrown) {
-                                                hideLoadIndicator();
-												var parts = jqXHR.responseText.split(':');
-												reportError('Ajax Request was not successful. 111');
-											}
-									});
-	/*
-	if(redirect != '') {
-		loadContent(redirect);
-		redirect = '';
-	}
-	*/
-}
-
-function submitFormConfirm(formname,target,confirmation) {
-	var successMessage = arguments[3];
-	if(window.confirm(confirmation)) {
-		var submitFormObj = jQuery.ajax({	type: "POST",
-											url: target,
-											data: jQuery('#'+formname).serialize(),
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-												if(successMessage) alert(successMessage);
-												if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
-													var parts = jqXHR.responseText.split(':');
-													//alert(parts[1]);
-													loadContent(parts[1]);
-													//redirect = parts[1];
-													//window.setTimeout('loadContent(redirect)', 1000);
-												} else {
-													jQuery('#pageContent').html(jqXHR.responseText);
-                                                    onAfterContentLoad();
-                                                    pageFormChanged = false;
-												}
-                                                hideLoadIndicator();
-											},
-											error: function(jqXHR, textStatus, errorThrown) {
-                                                hideLoadIndicator();
-												var parts = jqXHR.responseText.split(':');
-												reportError('Ajax Request was not successful. 111');
-											}
-									});
-	}
-}
-
-function submitUploadForm(formname,target) {
-	var handleResponse = function(loadedFrame) {
-		var response, responseStr = loadedFrame.contentWindow.document.body.innerHTML;
-
-		try {
-			response = JSON.parse(responseStr);
-		} catch(e) {
-			response = responseStr;
+	/* THIS ONE SHOULD BE REMOVED AFTER CREATING THE STATIC LOGIN PAGE!!! */
+	submitLoginForm: function(formname) {
+		//* Validate form. TODO: username and password with strip();
+		var frm = document.getElementById(formname);
+		var userNameObj = frm.username;
+		if(userNameObj.value == ''){
+			userNameObj.focus();
+			return;
 		}
-		var msg = '';
-		var okmsg = jQuery('#OKMsg',response).html();
-		if(okmsg){
-			msg = '<div id="OKMsg">'+okmsg+'</div>';
+		var passwordObj = frm.passwort;
+		if(passwordObj.value == ''){
+			passwordObj.focus();
+			return;
 		}
-		var errormsg = jQuery('#errorMsg',response).html();
-		if(errormsg){
-			msg = msg+'<div id="errorMsg">'+errormsg+'</div>';
+
+		$('#dummy_username').val(userNameObj.value);
+		$('#dummy_passwort').val(passwordObj.value);
+		$('#dummy_login_form').submit();
+
+		var submitFormObj = jQuery.ajax({
+			type: "POST",
+			url: "content.php",
+			data: jQuery('#'+formname).serialize(),
+			dataType: "html",
+			beforeSend: function() {
+				showLoadIndicator();
+			},
+			success: function(data, textStatus, jqXHR) {
+				if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
+					var parts = jqXHR.responseText.split(':');
+					//alert(parts[1]);
+					loadContent(parts[1]);
+					//redirect = parts[1];
+					//window.setTimeout('loadContent(redirect)', 1000);
+				} else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) {
+					// Go to the login page
+					document.location.href = 'index.php';
+				} else {
+					jQuery('#pageContent').html(jqXHR.responseText);
+					onAfterContentLoad('content.php', jQuery('#'+formname).serialize());
+					pageFormChanged = false;
+				}
+				loadMenus();
+				hideLoadIndicator();
+			},
+			error: function() {
+				hideLoadIndicator();
+				reportError('Ajax Request was not successful.110');
+			}
+		});
+	},
+
+	submitForm: function(formname, target, confirmation) {
+		var successMessage = arguments[3];
+		if(!confirmation) confirmation = false;
+		
+		if(!confirmation || window.confirm(confirmation)) {
+			var submitFormObj = jQuery.ajax({
+				type: "POST",
+				url: target,
+				data: jQuery('#'+formname).serialize(),
+				dataType: "html",
+				beforeSend: function() {
+					showLoadIndicator();
+				},
+				success: function(data, textStatus, jqXHR) {
+					if(successMessage) alert(successMessage);
+					if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
+						var parts = jqXHR.responseText.split(':');
+						//alert(parts[1]);
+						loadContent(parts[1]);
+						//redirect = parts[1];
+						//window.setTimeout('loadContent(redirect)', 1000);
+					} else {
+						jQuery('#pageContent').html(jqXHR.responseText);
+						onAfterContentLoad(target, jQuery('#'+formname).serialize());
+						pageFormChanged = false;
+					}
+					hideLoadIndicator();
+				},
+				error: function(jqXHR, textStatus, errorThrown) {
+					hideLoadIndicator();
+					var parts = jqXHR.responseText.split(':');
+					reportError('Ajax Request was not successful. 111');
+				}
+			});
 		}
-		return msg;
+	},
 
-    };
+	submitUploadForm: function(formname, target) {
+		var handleResponse = function(loadedFrame) {
+			var response, responseStr = loadedFrame.contentWindow.document.body.innerHTML;
 
-	var frame_id = 'ajaxUploader-iframe-' + Math.round(new Date().getTime() / 1000);
-	jQuery('body').after('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>');
-	jQuery('input[type="file"]').closest("form").attr({target: frame_id, action: target}).submit();
-	jQuery('#'+frame_id).load(function() {
-        var msg = handleResponse(this);
-		jQuery('#errorMsg').remove();
-		jQuery('#OKMsg').remove();
-		jQuery('input[name="id"]').before(msg);
-		jQuery(this).remove();
-      });
+			try {
+				response = JSON.parse(responseStr);
+			} catch(e) {
+				response = responseStr;
+			}
+			var msg = '';
+			var okmsg = jQuery('#OKMsg',response).html();
+			if(okmsg){
+				msg = '<div id="OKMsg">'+okmsg+'</div>';
+			}
+			var errormsg = jQuery('#errorMsg',response).html();
+			if(errormsg){
+				msg = msg+'<div id="errorMsg">'+errormsg+'</div>';
+			}
+			return msg;
 
-	/*
-	if(redirect != '') {
-		loadContent(redirect);
-		redirect = '';
-	}
-	*/
-}
+		};
 
-function loadContent(pagename) {
-  var params = arguments[1];
-  var pageContentObject2 = jQuery.ajax({	type: "GET",
-											url: pagename,
-                                            data: (params ? params : null),
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-												if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
-													var parts = jqXHR.responseText.split(':');
-													loadContent(parts[1]);
-												} else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
-													var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
-													document.location.href = newUrl;
-												} else {
-													//document.getElementById('pageContent').innerHTML = jqXHR.responseText;
-													//var reponse = jQuery(jqXHR.responseText);
-													//var reponseScript = reponse.filter("script");
-													//jQuery.each(reponseScript, function(idx, val) { eval(val.text); } );
+		var frame_id = 'ajaxUploader-iframe-' + Math.round(new Date().getTime() / 1000);
+		jQuery('body').after('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>');
+		jQuery('input[type="file"]').closest("form").attr({target: frame_id, action: target}).submit();
+		jQuery('#'+frame_id).load(function() {
+			var msg = handleResponse(this);
+			jQuery('#errorMsg').remove();
+			jQuery('#OKMsg').remove();
+			jQuery('input[name="id"]').before(msg);
+			jQuery(this).remove();
+		  });
+	},
 
-													jQuery('#pageContent').html(jqXHR.responseText);
-                                                    onAfterContentLoad();
-                                                    pageFormChanged = false;
-												}
-                                                hideLoadIndicator();
-											},
-											error: function() {
-                                                hideLoadIndicator();
-												reportError('Ajax Request was not successful. 113');
-											}
-									});
-}
+	function capp(module, redirect) {
+		var submitFormObj = jQuery.ajax({
+			type: "GET",
+			url: "capp.php",
+			data: "mod="+module+((redirect != undefined) ? '&redirect='+redirect : ''),
+			dataType: "html",
+			beforeSend: function() {
+				showLoadIndicator();
+			},
+			success: function(data, textStatus, jqXHR) {
+				if(jqXHR.responseText != '') {
+					if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
+						var parts = jqXHR.responseText.split(':');
+						loadContent(parts[1]);
+					} else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
+						var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
+						document.location.href = newUrl;
+					} else {
+						//alert(jqXHR.responseText);
+					}
+				}
+				loadMenus();
+				hideLoadIndicator();
+			},
+			error: function() {
+				hideLoadIndicator();
+				reportError('Ajax Request was not successful.'+module);
+			}
+		});
+	},
+	
+	loadContent: function(pagename) {
+		var params = arguments[1];
+		var pageContentObject2 = jQuery.ajax({
+			type: "GET",
+			url: pagename,
+			data: (params ? params : null),
+			dataType: "html",
+			beforeSend: function() {
+				showLoadIndicator();
+			},
+			success: function(data, textStatus, jqXHR) {
+				if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
+					var parts = jqXHR.responseText.split(':');
+					loadContent(parts[1]);
+				} else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
+					var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
+					document.location.href = newUrl;
+				} else {
+					//document.getElementById('pageContent').innerHTML = jqXHR.responseText;
+					//var reponse = jQuery(jqXHR.responseText);
+					//var reponseScript = reponse.filter("script");
+					//jQuery.each(reponseScript, function(idx, val) { eval(val.text); } );
+
+					jQuery('#pageContent').html(jqXHR.responseText);
+					onAfterContentLoad(pagename, (params ? params : null));
+					pageFormChanged = false;
+				}
+				hideLoadIndicator();
+			},
+			error: function() {
+				hideLoadIndicator();
+				reportError('Ajax Request was not successful. 113');
+			}
+		});
+	},
+
+	loadContentRefresh: function(pagename) {
+		if($('#refreshinterval').val() > 0) {
+			var pageContentObject2 = jQuery.ajax({
+				type: "GET",
+				url: pagename,
+				data: "refresh="+document.getElementById('refreshinterval').value,
+				dataType: "html",
+				beforeSend: function() {
+					showLoadIndicator();
+				},
+				success: function(data, textStatus, jqXHR) {
+					hideLoadIndicator();
+					jQuery('#pageContent').html(jqXHR.responseText);
+					onAfterContentLoad(pagename, "refresh="+document.getElementById('refreshinterval').value);
+					pageFormChanged = false;
+				},
+				error: function() {
+					hideLoadIndicator();
+					reportError('Ajax Request was not successful.'+pagename);
+				}
+			});
+			setTimeout( "ISPConfig.loadContentRefresh('"+pagename+"&refresh="+document.getElementById('refreshinterval').value+"')", document.getElementById('refreshinterval').value*1000*60 );
+		}
+	},
 
 
-function loadInitContent() {
-	var pageContentObject = jQuery.ajax({	type: "GET",
-											url: "content.php",
-											data: "s_mod=login&s_pg=index",
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-												if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
-													var parts = jqXHR.responseText.split(":");
-													loadContent(parts[1]);
-												} else {
-													jQuery('#pageContent').html(jqXHR.responseText);
-                                                    onAfterContentLoad();
-                                                    pageFormChanged = false;
-												}
-                                                hideLoadIndicator();
-											},
-											error: function() {
-                                                hideLoadIndicator();
-												reportError('Ajax Request was not successful. 114');
-											}
-										});
+	loadInitContent: function() {
+		var pageContentObject = jQuery.ajax({
+			type: "GET",
+			url: "content.php",
+			data: "s_mod=login&s_pg=index",
+			dataType: "html",
+			beforeSend: function() {
+				showLoadIndicator();
+			},
+			success: function(data, textStatus, jqXHR) {
+				if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
+					var parts = jqXHR.responseText.split(":");
+					loadContent(parts[1]);
+				} else {
+					jQuery('#pageContent').html(jqXHR.responseText);
+					onAfterContentLoad('content.php', "s_mod=login&s_pg=index");
+					pageFormChanged = false;
+				}
+				hideLoadIndicator();
+			},
+			error: function() {
+				hideLoadIndicator();
+				reportError('Ajax Request was not successful. 114');
+			}
+		});
+		
+		loadMenus();
+		keepalive();
+		setTimeout(function() {
+			try {
+				jQuery('form#pageForm').find('input[name="username"]').focus();
+			} catch (e) {
+			
+			}
+		}, 1000);
+	},
+	
+	loadMenus: function() {
+		var sideNavObject = jQuery.ajax({
+			type: "GET",
+			url: "nav.php",
+			data: "nav=side",
+			dataType: "html",
+			beforeSend: function() {
+				showLoadIndicator();
+			},
+			success: function(data, textStatus, jqXHR) {
+				hideLoadIndicator();
+				jQuery('#sidebar').html(jqXHR.responseText);
+				onAfterSideNavLoaded();
+				loadPushyMenu();
+			},
+			error: function() {
+				hideLoadIndicator();
+				reportError('Ajax Request was not successful. 115');
+			}
+		});
 
-  loadMenus();
-  keepalive();
-  setTimeout("setFocus()",1000);
+		var topNavObject = jQuery.ajax({
+			type: "GET",
+			url: "nav.php",
+			data: "nav=top",
+			dataType: "html",
+			beforeSend: function() {
+				showLoadIndicator();
+			},
+			success: function(data, textStatus, jqXHR) {
+				hideLoadIndicator();
+				jQuery('#topnav-container').html(jqXHR.responseText);
+				loadPushyMenu();
+			},
+			error: function(o) {
+				hideLoadIndicator();
+				reportError('Ajax Request was not successful. 116');
+			}
+		});
+	},
 
-}
+	changeTab: function(tab, target, force) {
+		if(requestsRunning > 0) return false;
+	
+		document.pageForm.next_tab.value = tab;
 
-function setFocus() {
-	try {
-		jQuery('form#pageForm').find('input[name="username"]').focus();
-	} catch (e) {
-	}
-}
-
-
-function loadMenus() {
-  var sideNavObject = jQuery.ajax({			type: "GET",
-											url: "nav.php",
-											data: "nav=side",
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-                                                hideLoadIndicator();
-												jQuery('#sideNav').html(jqXHR.responseText);
-											},
-											error: function() {
-                                                hideLoadIndicator();
-												reportError('Ajax Request was not successful. 115');
-											}
-									});
-
-  var topNavObject = jQuery.ajax({			type: "GET",
-											url: "nav.php",
-											data: "nav=top",
-											dataType: "html",
-											beforeSend: function() {
-												showLoadIndicator();
-											},
-											success: function(data, textStatus, jqXHR) {
-                                                hideLoadIndicator();
-												jQuery('#topNav').html(jqXHR.responseText);
-											},
-											error: function(o) {
-                                                hideLoadIndicator();
-												reportError('Ajax Request was not successful. 116');
-											}
-								});
-
-}
-
-function changeTab(tab,target,force) {
-	//document.forms[0].next_tab.value = tab;
-	document.pageForm.next_tab.value = tab;
-
-    var idel = jQuery('form#pageForm').find('[name="id"]');
-    var id = null;
-    if(idel.length > 0) id = idel.val();
-    if(tabChangeDiscard == 'y' && !force) {
-        if((idel.length < 1 || id) && (pageFormChanged == false || window.confirm(tabChangeDiscardTxt))) {
-            var next_tab = tab;
-            if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
-            else loadContent(target, {'next_tab': next_tab});
-        } else {
-            return false;
-        }
-    } else {
-        if(id && tabChangeWarning == 'y' && pageFormChanged == true) {
-            if(window.confirm(tabChangeWarningTxt)) {
-                submitForm('pageForm', target);
-            } else {
-                var next_tab = tab;
-                if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
-                else loadContent(target, {'next_tab': next_tab});
-            }
-        } else {
-            submitForm('pageForm',target);
-        }
-    }
-}
+		var idel = jQuery('form#pageForm').find('[name="id"]');
+		var id = null;
+		if(idel.length > 0) id = idel.val();
+		if(tabChangeDiscard == 'y' && !force) {
+			if((idel.length < 1 || id) && (pageFormChanged == false || window.confirm(tabChangeDiscardTxt))) {
+				var next_tab = tab;
+				if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
+				else loadContent(target, {'next_tab': next_tab});
+			} else {
+				return false;
+			}
+		} else {
+			if(id && tabChangeWarning == 'y' && pageFormChanged == true) {
+				if(window.confirm(tabChangeWarningTxt)) {
+					submitForm('pageForm', target);
+				} else {
+					var next_tab = tab;
+					if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
+					else loadContent(target, {'next_tab': next_tab});
+				}
+			} else {
+				submitForm('pageForm',target);
+			}
+		}
+	},
 
 function del_record(link,confirmation) {
   if(window.confirm(confirmation)) {
@@ -577,6 +575,8 @@
 pass_message['color'] = "green";
 pass_messages[5] = pass_message;
 
+var special_chars = "`~!@#$%^&*()_+|\=-[]}{';:/?.>,<\" ";
+
 function pass_check(password) {
 	var length = password.length;
 	var points = 0;
@@ -589,20 +589,29 @@
 		pass_result(1);
 		return;
 	}
-
+	
+	var different = 0;
+	
+	if (pass_contains(password, "abcdefghijklnmopqrstuvwxyz")) {
+		different += 1;
+	}
+	
 	if (pass_contains(password, "ABCDEFGHIJKLNMOPQRSTUVWXYZ")) {
 		points += 1;
+		different += 1;
 	}
 
 	if (pass_contains(password, "0123456789")) {
 		points += 1;
+		different += 1;
 	}
 
-	if (pass_contains(password, "`~!@#$%^&*()_+|\=-[]}{';:/?.>,<\" ")) {
+	if (pass_contains(password, special_chars)) {
 		points += 1;
+		different += 1;
 	}
 
-	if (points == 0) {
+	if (points == 0 || different < 3) {
 		if (length >= 5 && length <=6) {
 			pass_result(1);
 		} else if (length >= 7 && length <=8) {
@@ -740,27 +749,45 @@
     return rv;
 }
 
-function password(minLength, special){
-	var iteration = 0;
-	var password = "";
-	var randomNumber;
+function password(minLength, special, num_special){
 	minLength = minLength || 10;
+	if(minLength < 8) minLength = 8;
 	var maxLength = minLength + 5;
 	var length = getRandomInt(minLength, maxLength);
-	if(special == undefined){
-		var special = false;
+	
+	var alphachars = "abcdefghijklmnopqrstuvwxyz";
+	var upperchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    var numchars = "1234567890";
+    var specialchars = "!@#_";
+	
+	if(num_special == undefined) num_special = 0;
+	if(special != undefined && special == true) {
+		num_special = Math.floor(Math.random() * (length / 4)) + 1;
 	}
-	while(iteration < length){
-		randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;
-		if(!special){
-			if ((randomNumber >=33) && (randomNumber <=47)) { continue; }
-			if ((randomNumber >=58) && (randomNumber <=64)) { continue; }
-			if ((randomNumber >=91) && (randomNumber <=96)) { continue; }
-			if ((randomNumber >=123) && (randomNumber <=126)) { continue; }
-		}
-		iteration++;
-		password += String.fromCharCode(randomNumber);
+	var numericlen = getRandomInt(1, 2);
+	var alphalen = length - num_special - numericlen;
+	var upperlen = Math.floor(alphalen / 2);
+	alphalen = alphalen - upperlen;
+	var password = "";
+	
+	for(i = 0; i < alphalen; i++) {
+		password += alphachars.charAt(Math.floor(Math.random() * alphachars.length));
 	}
+	
+	for(i = 0; i < upperlen; i++) {
+		password += upperchars.charAt(Math.floor(Math.random() * upperchars.length));
+	}
+	
+	for(i = 0; i < num_special; i++) {
+		password += specialchars.charAt(Math.floor(Math.random() * specialchars.length));
+	}
+	
+	for(i = 0; i < numericlen; i++) {
+		password += numchars.charAt(Math.floor(Math.random() * numchars.length));
+	}
+	
+	password = password.split('').sort(function() { return 0.5 - Math.random(); }).join('');
+	
 	return password;
 }
 
@@ -776,9 +803,9 @@
 	var newPWField = oldPWField.clone();
 	newPWField.attr('type', 'text').attr('id', 'tmp'+passwordFieldID).insertBefore(oldPWField);
 	oldPWField.remove();
-	var pword = password(<?php echo $min_password_length ?>, false);
+	var pword = password(<?php echo $min_password_length; ?>, false, 1);
 	jQuery('#'+repeatPasswordFieldID).val(pword);
-	newPWField.attr('id', passwordFieldID).val(pword).trigger('keyup');
+	newPWField.attr('id', passwordFieldID).val(pword).trigger('keyup').select();
 }
 
 var funcDisableClick = function(e) { e.preventDefault(); return false; };
@@ -813,13 +840,13 @@
     return Math.floor(Math.random() * (max - min + 1)) + min;
 }
 
-jQuery('.addPlaceholder').live("click", function(){
+jQuery(document).on("click", ".addPlaceholder", function(){
 	var placeholderText = jQuery(this).text();
 	var template = jQuery(this).siblings(':input');
 	template.insertAtCaret(placeholderText);
 });
 
-jQuery('.addPlaceholderContent').live("click", function(){
+jQuery(document).on("click", ".addPlaceholderContent", function(){
 	var placeholderContentText = jQuery(this).find('.addPlaceholderContent').text();
 	var template2 = jQuery(this).siblings(':input');
 	template2.insertAtCaret(placeholderContentText);

--
Gitblit v1.9.1