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"), "");
}
function removeSlash(str) {
    return ltrim(str.toString(), '/');
}
/* 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();
			},
                        onError: function (transport){
                            errorBox(LerrorCreateGroup);
                        }

		});
	}, 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(LerrorCreateUser);
				}
				new Ajax.Updater('rightPanel', 'content/forms/user.php?uid=' + trim(transport.responseText));
				showGroupOverview();
			},
                        onError: function(){
                            errorBox(LerrorCreateUser);
                        }
		});
	},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);
		},
                onError: function(){
                    errorBox(LcouldNotChangeUserName);
                }
	});
}

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);
		},
                onError: function(){
                    errorBox(LcouldNotChangeGroupName);
                }
	});
}

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);
			},
                        onError: function(){
                            errorBox(LcouldNotChangePasswd);
                        }
		});
	}
}

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);
			},
                        onError: function(){
                            errorBox(LerrorDelGroupFromUser);
                        }
		});	
	}, 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);
			},
                        onError: function (){
                            errorBox(LerrorDelGroupFromUser);
                        }
		});	
	}, 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);
			},
                        onError: function(){
                            	errorBox(LerrorDelModul);
                        }
		});	
	}, 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);
			},
                        onError: function(){
                            errorBox(LerrorDelGroup);
                        }
		});	
	}, 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);
			},
                        onError: function(){
                            errorBox(LerrorDelUser);
                        }
		});	
	}, 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 hideGroupOptionBox(uid)
{
	new Ajax.Updater('rightPanel', 'content/forms/user.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);
			},
                        onError: function(){
                            errorBox(LerrorAddUserToGroup);
                        }
		});	
}

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

function hideUserOptionBox(gid){
    new Ajax.Updater('rightPanel','content/forms/group.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);
			},
                        onError: function(){
                            errorBox(LerrorAddUserToGroup);
                        }
		});	
}

/* 
 * 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 hideModuleOptionBox(gid){
     new Ajax.Updater('rightPanel','content/forms/group.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);
			},
                        onError: function(){
                            errorBox(LerrorAddModul);
                        }
		});	
}

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 showGroupRights(gid)
{
	if(gid == 0)
		$('rightPanel').innerHTML = "";
	else
		new Ajax.Updater('rightPanel','content/forms/group.php?gid=' + gid);
}
function deleteGroupRight(aid,gid){
    var ok=false;

    if (aid==0)
        $('rightPanel').innerHTML = "";
    else{

        delUserFromGroupMsgBar = messageBar("question", LdelRightfromGroup, function(){
            var pars = "aid=" + aid;
            new Ajax.Request('application/actions/userManagement/deleteGroupRight.php',
                {
                    parameters: pars,
                    method: "post",
                    onComplete: function(transport)
                    {
                        if(trim(transport.responseText) != "true")
                        {

                                errorBox(LerrorDelGroupRight);
                        }else{

                            ok = true;
                            window.setTimeout("showGroupRights(" + gid+ ")", 100);
                        }

                    },
                    onError: function(transport){
                       errorBox(LerrorNewGroup);
                        window.setTimeout("showGroupRights(" + gid+ ")", 100);
                    }
                });
      },true,true,true);
    }
    return ok;

}
function newGroupRight(gid,aid,path,right_level){
    var ok=false;

    if (gid==0)
        $('rightPanel').innerHTML = "";
    else{

        var pars = "gid=" + gid+ "&path=" + path + "&rightlevel=" + right_level;
        new Ajax.Request('application/actions/userManagement/newGroupRight.php',
        {
            parameters: pars,
            method: "post",
            onComplete: function(transport)
            {
                if(trim(transport.responseText) != "true")
                {
                    if (trim(transport.responseText) == "allready_exists"){
                        errorBox(LerrorRightAllreadyExists);
                    }else{
                        errorBox(LerrorNewGroup);
                    }
                    window.setTimeout("showGroupRights(" + gid + ")", 100);
                }else{

                    ok = true;
                }

            },
            onError: function(transport){
                errorBox(LerrorNewGroup);
                window.setTimeout("showGroupRights(" + gid + ")", 100);
            }
        });
    }
    return ok;
}

function updateGroupRights(gid, aid, path, right_level){
    var ok=false;
    if (gid==0)
        $('rightPanel').innerHTML = "";
    else{
      
        var pars = "aid=" + aid + "&gid=" + gid+ "&path=" + path + "&rightlevel=" + right_level;
        new Ajax.Request('application/actions/userManagement/updateGroupRight.php',
        {
            parameters: pars,
            method: "post",
            onComplete: function(transport)
            {
                if(trim(transport.responseText) != "true")
                {
                    errorBox(LerrorUpdateGroup);
                    window.setTimeout("showGroupRights(" + gid+ ")", 100);
                }else{
                                     
                    ok = true;
                }
            },
            onError: function(transport){
                errorBox(LerrorUpdateGroup);
                window.setTimeout("showGroupRights(" + gid + ")", 100);
            }
        });
    }
    return ok;
}

function addGroupRights(gid,next_id)
{
    if(gid == 0)
        $('rightPanel').innerHTML = "";
    else{
        new Ajax.Request('application/actions/userManagement/newRights.php',
        {
            parameters: "gid=" + gid + "&nextid=" + next_id,
            method: "post",
            onComplete: function(transport){
                if(trim(transport.responseText) == "")
                {
                    errorBox(LnewGroupRighterror);
                }
                var n= new Element ('div',{
                    'id':'accessRightEditable-new-div' +next_id
                });
                n.innerHTML = transport.responseText;
                $('groupRightsDiv').insertBefore(n, $('add-rights'));
                replaceAccessrightsEditable(next_id, "newGroupRight", gid, "0", "/", "0",true);
            },
            onError: function(transport){
                errorBox(LnewGroupRighterror);
            }
            
        });
    }
}

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;
        },
        onError: function(){
              errorBox(LerrorSetHomeDir);
        }
    });
}

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);
        },
        onError: function(){
             errorBox(LerrorSetHomeDir);
        }
    });
}
