
function EPermissions ()
{
	this.queId = false;
	this.suggestKey = "";
	this.suggestObjReff = false;
	this.setPermissionLevel = function (entity_id, entity_type, level)
	{
		switch(level)
		{
			case 0:
			case 1:
				this.showHideUserLists(false);
			break;
			case 2:
				this.showHideUserLists(true);
			break;
		}
		data = new Object();
		$.post(Contests.NORMAL_URL+"index.php?pn=contest_page&fn=ClientPermissions->setPermissions&entity_id="+entity_id+"&entity_type="+entity_type+"&level="+level,data,function(data){
			$("#permissions_msg").html(data.msg).slideDown("slow", function () {
						setTimeout("$('#permissions_msg').slideUp('slow')",2000);
					});
		},
		"json");
	}
	
	//this will que a sugest
	this.suggestUsers = function (key,ObjReff)
	{
		if(this.queId)
		{
			clearTimeout(this.queId);
		}
		
		if(key=="")
		{
			$("#suggested_users_list").html("");
		}
		else
		{
			this.suggestObjReff = ObjReff;
			this.suggestKey = key;
			this.queId = setTimeout("runUsersSuggest()",300);
		}		
	}
	
	this.runUsersSuggest = function ()
	{
		this.queId = false;
		data = new Object();
		$.post(Contests.NORMAL_URL+"index.php?pn=contest_page&fn=ClientPermissions->suggestUsers&key="+this.suggestKey,data,function(data){
			$("#suggested_users_list").html("");
			for(i in data.data)
			{
				var newUser = document.createElement("a");
				var newId = "user_"+data.data[i].user_id;
				newUser.id = newId;
				newUser.innerHTML = data.data[i].username;
				
				$("#suggested_users_list").append(newUser);
				
				$("#"+newId).attr("href","#");
				$("#"+newId).attr("title","click to add this user");
				$("#"+newId).attr("onclick","EPermissions.getInstance().addUser("+data.data[i].user_id+",cp_page_entity_id,cp_page_entity_type);return false");
				$("#"+newId).addClass("contentLink");
			}
		},
		"json");
	}
	
	this.addUser = function (user_id,entity_id,entity_type)
	{
		data = new Object();
		$.post(Contests.NORMAL_URL+"index.php?pn=contest_page&fn=ClientPermissions->addUser&entity_id="+entity_id+"&entity_type="+entity_type+"&_user_id="+user_id,data,function(data){
			$("#permissions_msg").html(data.msg).slideDown("slow", function () {
						setTimeout("$('#permissions_msg').slideUp('slow')",2000);
					});
			EPermissions.getInstance().buildUsersList(data.data);
			default_user_list = data.data;
		},
		"json");
	}
	
	this.removeUser = function (user_id,entity_id,entity_type)
	{
		data = new Object();
		$.post(Contests.NORMAL_URL+"index.php?pn=contest_page&fn=ClientPermissions->removeUser&entity_id="+entity_id+"&entity_type="+entity_type+"&_user_id="+user_id,data,function(data){
			$("#permissions_msg").html(data.msg).slideDown("slow", function () {
						setTimeout("$('#permissions_msg').slideUp('slow')",2000);
					});
			EPermissions.getInstance().buildUsersList(data.data);
			default_user_list = data.data;
		},
		"json");
	}
	
	//builds the list of users who have permissions to this entity
	this.buildUsersList = function (list)
	{
		$("#current_users_list").html("");
		for(i in list)
		{
			var newUser = document.createElement("a");
			var newId = "e_user_"+list[i].user_id;
			newUser.id = newId;
			newUser.innerHTML = list[i].username;
			
			$("#current_users_list").append(newUser);
			
			$("#"+newId).attr("href","#");
			$("#"+newId).attr("title","click to remove this user");
			$("#"+newId).attr("onclick","EPermissions.getInstance().removeUser("+list[i].user_id+",cp_page_entity_id,cp_page_entity_type);return false");
			$("#"+newId).addClass("contentLink");
		}
	}
	
	this.showHideUserLists = function (show)
	{
		if(show)
		{
			$("#users_list_list").show();
		}
		else
		{
			$("#users_list_list").hide();
		}
		
	}
}

EPermissions.__instance__=null;

EPermissions.getInstance=function()
{
	if(EPermissions.__instance__==null)
	{
		EPermissions.__instance__=new EPermissions();
	}
	return EPermissions.__instance__;
}


function show_edit_rights ()
{
	$("#card_permissions_container").dialog('open');
	EPermissions.getInstance().buildUsersList(default_user_list);
	$("#permission_level_"+default_permission_level).attr("checked",true);
	if(default_permission_level==2)
	{
		EPermissions.getInstance().showHideUserLists(true);
	}
}

function runUsersSuggest()
{
	EPermissions.getInstance().runUsersSuggest();
}

function closePermissons()
{
	$("#card_permissions_container").dialog('close');
}
