function trim(str, chars)
{
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars)
{
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars)
{
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

/* used by userManagement main form (content/main/userManagement.php) */

function createGroup()
{
	messageBar("question", LgroupName + ": <input type=\"text\" id=\"groupName\" />", function()
	{
		var pars = "groupName=" + $F("groupName");
		new Ajax.Request('application/actions/userManagement/createGroup.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) == "")
				{
					errorBox(LerrorCreateGroup);
				}
				new Ajax.Updater('rightPanel', 'content/forms/group.php?gid=' + trim(transport.responseText));
				showGroupOverview();
			}	
		});
	}, true, true, true);	
}

function createUser()
{
	messageBar("question", LuserName + ": <input type=\"text\" id=\"userName\" />", function()
	{
		var pars = "userName=" + $F("userName");
		new Ajax.Request('application/actions/userManagement/createUser.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) == "")
				{
					errorBox(LerrorCreateGroup);
				}
				new Ajax.Updater('rightPanel', 'content/forms/user.php?uid=' + trim(transport.responseText));
				showGroupOverview();
			}	
		});
	},true, true, true);
}
 //---
 
function changeUserName(newUserName, userID)
{
	$userID = userID;
	var pars = "uname=" + escape(newUserName) + "&uid=" + escape(userID);
	new Ajax.Request('application/actions/userManagement/changeUserName.php', 
	{
		parameters: pars,
		method: "post",
		onComplete: function(transport) 
		{
			if(trim(transport.responseText) != "true")
			{
				errorBox(LcouldNotChangeUserName);
			}
			window.setTimeout("showUser($userID)", 100);
			window.setTimeout("showGroupOverview()", 100);
		}
	});
}

function setUserAttribute(value, uid, uaid)
{
	var pars = "value=" + escape(value) + "&uid=" + escape(uid) + "&uaid=" + escape(uaid);
	new Ajax.Request('application/actions/userManagement/setUserAttribute.php', 
	{
		parameters: pars,
		method: "post"
	});
}

function changeGroupName(newGroupName, groupID)
{
	$groupID = groupID;
	var pars = "gname=" + escape(newGroupName) + "&gid=" + escape(groupID);
	new Ajax.Request('application/actions/userManagement/changeGroupName.php', 
	{
		parameters: pars,
		method: "post",
		onComplete: function(transport) 
		{
			if(trim(transport.responseText) != "true")
			{
				errorBox(LcouldNotChangeGroupName);
			}
			window.setTimeout("showGroupOverview();", 100);
		}
	});
}

function changePasswd(userID)
{
	$userID = userID;
	var passwd = $F('passwd');
	var retypePasswd = $F('passwd2');
	var md5Passwd = MD5($F('passwd'));
	var pars = "uid=" + escape(userID) + "&passwd=" + escape(md5Passwd);
	
	if(passwd != retypePasswd) 
	{
		errorBox(LnotTheSamePasswd);
	}
	else 
	{
		new Ajax.Request('application/actions/userManagement/changePasswd.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LcouldNotChangePasswd);
				}
				else
				{
					infoBox(LpasswordSaved);	
				}
				window.setTimeout("showUser($userID)", 100);
			}
		});
	}
}

function delGroupFromUser(uid, gid)
{
 	$userID = uid;
	delGroupFromUserMsgBar = messageBar("question", LdelGroupFromUser, function()
	{
	 var pars = "uid=" + uid + "&gid=" + gid;
	 new Ajax.Request('application/actions/userManagement/delGroupFromUser.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorDelGroupFromUser);
				}
				window.setTimeout("showUser($userID)", 100);
				window.setTimeout("showGroupOverview()", 100);
			}
		});	
	}, true, true, true); 
}

function delUserFromGroup(uid, gid)
{
 	$gid = gid;
	delUserFromGroupMsgBar = messageBar("question", LdelGroupFromUser, function()
	{
	 var pars = "uid=" + uid + "&gid=" + gid;
	 new Ajax.Request('application/actions/userManagement/delGroupFromUser.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorDelGroupFromUser);
				}
				window.setTimeout("showGroup($gid)", 100);
				window.setTimeout("showGroupOverview()", 100);
			}
		});	
	}, true, true, true); 
}

function delModulFromGroup(mid, gid)
{
 	$gid = gid;
	delModulFromGroupMsgBar = messageBar("question", LdelModulFromGroup, function()
	{
	 var pars = "mid=" + mid + "&gid=" + gid;
	 new Ajax.Request('application/actions/userManagement/delModulFromGroup.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorDelModul);
				}
			window.setTimeout("showGroup($gid)", 100);
			}
		});	
	}, true, true, true); 
}

function delGroup(gid)
{
	messageBar("question", LdelGroup, function()
	{
		var pars = "gid=" + gid;
		new Ajax.Request('application/actions/userManagement/delGroup.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorDelGroup);
				}
				window.setTimeout("showGroup(0)", 100);
				window.setTimeout("showGroupOverview()", 100);
			}
		});	
	}, true, true, true); 
}

function delUser(uid)
{
	messageBar("question", LdelUser, function()
	{
		var pars = "uid=" + uid;
		new Ajax.Request('application/actions/userManagement/delUser.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorDelUser);
				}
				window.setTimeout("showUser(0)", 100);
				window.setTimeout("showGroupOverview()", 100);
			}
		});	
	}, true, true, true); 
}

/* 
 * Show HTML-Option Box with all availabe groups and an OK-Button
 * with addGroupToUserCallback as callback function
 */

function showGroupOptionBox(uid)
{
	new Ajax.Updater('selectGroup', 'application/actions/userManagement/showGroupOptionBox.php?uid=' + uid);
}

function addGroupToUserCallback(gid, uid)
{
	 var pars = "uid=" + uid + "&gid=" + gid;
	 new Ajax.Request('application/actions/userManagement/addUserToGroup.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorAddUserToGroup);
				}
				window.setTimeout("showUser(" + uid + ")", 100);
				window.setTimeout("showGroupOverview()", 100);
			}
		});	
}

/* 
 * Show HTML-Option Box with all availabe users and an OK-Button
 * with addUserToGroupCallback as callback function
 */

function showUserOptionBox(gid)
{
	new Ajax.Updater('selectUser', 'application/actions/userManagement/showUserOptionBox.php?gid=' + gid);
}

function addUserToGroupCallback(uid, gid)
{
 	$groupID = gid;
	 var pars = "uid=" + uid + "&gid=" + gid;
	 new Ajax.Request('application/actions/userManagement/addUserToGroup.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorAddUserToGroup);
				}
			window.setTimeout("showGroup($groupID)", 100);
			window.setTimeout("showGroupOverview()", 100);
			}
		});	
}

/* 
 * Show HTML-Option Box with all availabe modules and an OK-Button
 * with addModuleToUserCallback as callback function
 */

function showModuleOptionBox(gid)
{
	new Ajax.Updater('selectModul', 'application/actions/userManagement/showModuleOptionBox.php?gid=' + gid);
}

function addModuleToGroupCallback(mid, gid)
{
 	$groupID = gid;
	 var pars = "mid=" + mid + "&gid=" + gid;
	 new Ajax.Request('application/actions/userManagement/addModuleToGroup.php',
		{
			parameters: pars,
			method: "post",
			onComplete: function(transport)
			{
				if(trim(transport.responseText) != "true")
				{
					errorBox(LerrorAddModul);
				}
			window.setTimeout("showGroup($groupID)", 100);
			}
		});	
}

function showUser(uid)
{
	if(uid == 0)
		$('rightPanel').innerHTML = "";
	else
		new Ajax.Updater('rightPanel', 'content/forms/user.php?uid=' + uid);
}

function showGroupOverview()
{
	new Ajax.Updater('leftPanel', 'content/forms/groupOverview.php');
}

function showGroup(gid)
{
	if(gid == 0)
		$('rightPanel').innerHTML = "";
	else
		new Ajax.Updater('rightPanel','content/forms/group.php?gid=' + gid);
}

function showUserManagement()
{
	new Ajax.Updater('content','content/main/userManagement.php');
}

function showHomeDirSelectionDialog(uid) {
    dialog.show(LselectFile, "homeDirSelectionCallback(" +uid +");");
    $('dialog_content').innerHTML = "<div id='fileView'> </div>";
    browseDirectories($('homedir').value);
}

function homeDirSelectionCallback(uid) {
    setHomeDir(getSelectedFile(), uid);
}

function setHomeDir(file, uid) {
    new Ajax.Request('application/actions/userManagement/setHomeDir.php',
    {
        parameters: "path=" + file + "&uid=" + uid,
        method: "post",
        onComplete: function(transport){
            if(trim(transport.responseText) == "")
            {
                errorBox(LerrorSetHomeDir);
            }
            $('homedir').value = transport.responseText;
        }
    });
}

function setWritePermissionOnHomeDir(uid){
    permission = $('writepermissiononhomedir').checked;
    new Ajax.Request('application/actions/userManagement/setWritePermissionOnHomeDir.php',
    {
        parameters: "permission=" + permission + "&uid=" + uid,
        method: "post",
        onComplete: function(transport){
            if(trim(transport.responseText) != "true")
            {
                errorBox(LerrorSetHomeDir);
            }
            showUser(uid);
        }
    });
}
