var models = Array("blog", "docs", "conf", "file", "pres", "gallery");
var deleteUserId;

MochaUI.addUserWindow = function() {
	new MochaUI.Window({
		id: 'useradd',
		title: 'Добавление пользователя',
		content: getAddUserForm(),
		width: 600,
		height: 300
	});
};

MochaUI.editUserWindow = function(content) {
	new MochaUI.Window({
		id: 'useredit',
		title: 'Редактирование прав пользователя',
		content: content,
		width: 600,
		height: 300
	});
};

MochaUI.messageBox = function() {
	new MochaUI.Window({
		id: 'msgbox',
		title: 'Запрос',
		content: getMessageBoxContent(),
		width: 400,
		height: 75
	});
};

function addCompanyUser() {
	MochaUI.addUserWindow();
}

function getAddUserForm() {
	return '<div id="useradd_div">Имя пользователя: <input type="text" id="search_user" />' +
		'<button type="button" onclick="searchUser();">Найти</button>' +
		'<div id="search_res_div"></div></div>';
}

function getMessageBoxContent() {
	return '<table width="100%"><tr><td align="center" colspan="2">Вы действительно хотите удалить пользователя?</td></tr>'+
	'<tr><td width="50%" align="right"><button type="button" onclick="deleteCompanyUserRequest();">Да</button></td>' +
	'<td width="50%"><button type="button" onclick="MochaUI.closeWindow($(\'msgbox\'));">Нет</button></td></tr></table>';
}

function searchUser(page) {
	if (page === undefined) page = 1;
	new Request({
		method: "get", 
		data: "str=" + $("search_user").value + "&context=" + context + "&page=" + page,
		onSuccess: function(response) {
				$("search_res_div").innerHTML = response; 
			},
		url: url + "ajaxrequest?companyusersmgr&action=searchusers"
	}).send();
}

var partnerId;

function addUser(id) {
	partnerId = id;
	var overDiv = new Element("div", {
		"id" : "overdiv"
	});
	if (navigator.userAgent.indexOf("IE 6") != -1) {
		overDiv.style.position = "absolute";
	}
	else {
		overDiv.style.position = "fixed";
	}
	overDiv.style.top = $("useradd").getPosition().y + "px";
	overDiv.style.left = $("useradd").getPosition().x + "px";
	overDiv.style.backgroundColor = "white";
	overDiv.style.opacity = 0.6;
	overDiv.style.width = $("useradd").style.width;
	overDiv.style.height = $("useradd").style.height;
	overDiv.style.zIndex = "140";
	$(document.body).appendChild(overDiv);
	var div = new Element("div", {
		id: "popup_role"
	});
	if (navigator.userAgent.indexOf("IE 6") != -1) {
		div.style.position = "absolute";
	}
	else {
		div.style.position = "fixed";
	}
	div.style.top = $("add_link" + id).getPosition().y + "px";
	div.style.left = parseInt($("add_link" + id).getPosition().x + $("add_link" + id).offsetWidth + 10) + "px";
	div.style.border = "1px solid black";
	div.style.backgroundColor = "white";
	div.style.width = "100px";
	div.style.height = "100px";
	div.style.zIndex = "150";
	div.innerHTML = getRolesDivContent(); 
	$(document.body).appendChild(div);
}

function getRolesDivContent() {
	return '<h3>Выберите роль:</h3>' + 
		'<a href="javascript:;" onclick="selectRole(1);">Администратор</a><br />' +
		'<a href="javascript:;" onclick="selectRole(2);">Сотрудник</a><br />' +
		'<a href="javascript:;" onclick="selectRole(3)"">Партнер</a><br />' +
		'<a href="javascript:;" onclick="cancelRoleSelect();">Отмена</a>';
}

function selectRole(role) {
	$("popup_role").destroy();
	$("overdiv").destroy();
	new Request({
		method: "get", 
		data: "&context=" + context + "&id=" + partnerId + "&role=" + role,
		onSuccess: function(response) {
			$("add_link" + partnerId).innerHTML = "Запрос на добавление отправлен"; 
		},
		url: url + "ajaxrequest?companyusersmgr&action=adduser"
	}).send();
}

function cancelRoleSelect() {
	$("popup_role").destroy();
	$("overdiv").destroy();
}

function editUserRights(userId) {
	new Request({
		method: "get", 
		data: "&context=" + context + "&id=" + userId,
		onSuccess: function(response) {
			MochaUI.editUserWindow(response);
			checkRoleSelect();
			setRulesCheckBoxes();
		},
		url: url + "ajaxrequest?companyusersmgr&action=edituser"
	}).send();
}

function checkFullAccess(model) {
	if ($("full_" + model).checked) {
		$("create_" + model).checked = "checked";
		$("edit_" + model).checked = "checked";
		$("remove_" + model).checked = "checked";
		$("public_" + model).checked = "checked";
	}
	else {
		$("create_" + model).checked = false;
		$("edit_" + model).checked = false;
		$("remove_" + model).checked = false;
		$("public_" + model).checked = false;
	}
}

function checkRoleSelect() {
	if($("role3").selected) {
		$("rules").style.display = "none";
		$("admin_rules").style.display = "block";
	}
	else {
		$("admin_rules").style.display = "none";
		$("rules").style.display = "block";
	}
}

function setRulesCheckBoxes() {
	for (var i = 0; i < models.length; i++) {
		if ($("create_" + models[i]).checked && $("edit_" + models[i]).checked && $("remove_" + models[i]).checked && $("public_" + models[i]).checked) {
			$("full_" + models[i]).checked = "checked";
		}
		else {
			$("full_" + models[i]).checked = false;
		}
	}
}

function buildRightsString() {
	var strArray = Object();
	for (var i = 0; i < models.length; i++) {
		strArray["create_" + models[i]] = $("create_" + models[i]).checked;
		strArray["edit_" + models[i]] = $("edit_" + models[i]).checked;
		strArray["remove_" + models[i]] = $("remove_" + models[i]).checked;
		strArray["public_" + models[i]] = $("public_" + models[i]).checked;
	}
	var str = JSON.stringify(strArray);
	return str;
}

function getSelectedRole() {
	if ($("role3").selected) return 1;
	if ($("role4").selected) return 2;
	if ($("role5").selected) return 3;
}

function saveUserRights(userId) {
	var str = buildRightsString();
	var role = getSelectedRole();

	str = str.substr(1, (str.length - 2)); // Убираем { и } в посте режутся

	new Request({
		method: "post", 
		data: "&id=" + userId + "&role=" + role + "&rights=" + str + "&job_name=" + $("job_name").value,
		onSuccess: function(response) {
		//alert(response);
		var resp = JSON.parse(response);
		if (resp.success) {
			MochaUI.notification("Сохранено!");
			$("user" + userId).outerHTML = resp.message;
		}
		else {
			MochaUI.notification(resp.message);
		}
		MochaUI.closeWindow($("useredit"));
		},
		url: url + "ajaxrequest?companyusersmgr&action=saveuserrights&context=" + context
	}).send();
}

function cancelEditUserRights() {
	MochaUI.closeWindow($("useredit"));
}

function deleteCompanyUserRequest() {
	new Request({
		method: "get", 
		data: "&context=" + context + "&id=" + deleteUserId,
		onSuccess: function(response) {
			var resp = JSON.parse(response);
			if (resp.success) {
				MochaUI.notification("Пользователь удален!");
				$("user" + deleteUserId).destroy();
			}
			else {
				MochaUI.notification(resp.message);
			}
			MochaUI.closeWindow($("msgbox"));
		},
		url: url + "ajaxrequest?companyusersmgr&action=removeuser"
	}).send();
}

function deleteCompanyUser(userId) {
	deleteUserId = userId;
	MochaUI.messageBox();
}


if (typeof(HTMLElement) != "undefined") {
    var _emptyTags = {
       "IMG": true,
       "BR": true,
       "INPUT": true,
       "META": true,
       "LINK": true,
       "PARAM": true,
       "HR": true
    };
    
    HTMLElement.prototype.__defineGetter__("outerHTML", function () {
       var attrs = this.attributes;
       var str = "<" + this.tagName;
       for (var i = 0; i < attrs.length; i++)
          str += " " + attrs[ i ].name + "=\"" + attrs[ i ].value + "\"";
    
       if (_emptyTags[this.tagName])
          return str + ">";
    
       return str + ">" + this.innerHTML + "</" + this.tagName + ">";
    });
    
    HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
       var r = this.ownerDocument.createRange();
       r.setStartBefore(this);
       var df = r.createContextualFragment(sHTML);
       this.parentNode.replaceChild(df, this);
    });
}

function requestCompanyInvite() {
	new Request({
		method: "get", 
		//data: "&context=" + context,
		data: "action=" + "web/company/requestinvite&context=" + context,
		onSuccess: function(response) {
			//alert(response);
			var resp = JSON.parse(response);
			if (resp.success) {
				MochaUI.notification("Запрос принят");
			}
			else {
				MochaUI.notification(resp.message);
			}
		},
		//url: url + "ajaxrequest?companyusersmgr&action=requestinvite"
		url: "assets/components/2nets/connector.php"
	}).send();
}

function confirmCompanyUserRequest(userId) {
	new Request({
		method: "get", 
		//data: "&context=" + context + "&id=" + userId,
		data: "action=" + "web/company/confirmuserrequest&context=" + context + "&id=" + userId,
		onSuccess: function(response) {
			//alert(response);
			var resp = JSON.parse(response);
			if (resp.success) {
				MochaUI.notification("Запрос принят");
				$("user" + userId).destroy();
			}
			else {
				MochaUI.notification(resp.message);
			}
		},
		//url: url + "ajaxrequest?companyusersmgr&action=confirmuserrequest"
		url: "assets/components/2nets/connector.php"
	}).send();	
}


function denyCompanyUserRequest(userId) {
	new Request({
		method: "get", 
		data: "&context=" + context + "&id=" + userId,
		onSuccess: function(response) {
			var resp = JSON.parse(response);
			if (resp.success) {
				MochaUI.notification("Запрос отклонен");
				$("user" + userId).destroy();
			}
			else {
				MochaUI.notification(resp.message);
			}
		},
		url: url + "ajaxrequest?companyusersmgr&action=denyuserrequest"
	}).send();
}

function confirmInviteFromUser(context) {
	new Request({
		method: "get", 
		data: "&context=" + context,
		onSuccess: function(response) {
			var resp = JSON.parse(response);
			if (resp.success) {
				MochaUI.notification("Приглашение принято");
			}
			else {
				MochaUI.notification(resp.message);
			}
		},
		url: "ajaxrequest?companyusersmgr&action=confirminvitefromuser"
	}).send();
}

function denyInviteFromUser(context) {
	new Request({
		method: "get", 
		data: "&context=" + context,
		onSuccess: function(response) {
			var resp = JSON.parse(response);
			if (resp.success) {
				MochaUI.notification("Приглашение отклонено");
			}
			else {
				MochaUI.notification(resp.message);
			}
		},
		url: "ajaxrequest?companyusersmgr&action=denyinvitefromuser"
	}).send();
}
