﻿Type.registerNamespace("Finatica");
Type.registerNamespace("Finatica.ContactList");

if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

var contactManagerProxy;

Finatica.ContactList.fileSelected = function (sender, e) {
		$('#' + Finatica.ContactList.hdnFile).val("FileAdded");
}

Finatica.ContactList.sendButtonClick = function () {

	if ($('#' + Finatica.ContactList.hdnFile).val() == "FileAdded")
		return true;

	if ($find(Finatica.ContactList.VM).getIsValid())
		Finatica.ContactList.Send();
	return false
}

Finatica.ContactList.addContact = function(contactID, sender) {
	if (contactManagerProxy == undefined)
		contactManagerProxy = new Finatica.WebServices.ContactManager();
	var result = contactManagerProxy.AddContactNew(contactID, Finatica.ContactList.OnAddSucceeded, Finatica.ContactList.OnFailed, sender);
}

Finatica.ContactList.deleteContact = function(contactID, isFriend, sender) {
	if (contactManagerProxy == undefined)
		contactManagerProxy = new Finatica.WebServices.ContactManager();

	var result = contactManagerProxy.DeleteContactNew(contactID, isFriend, false, Finatica.ContactList.OnAddSucceeded, Finatica.ContactList.OnFailed, sender);
}

Finatica.ContactList.restoreContact = function(currentUserId, contactID, sender) {
	if (contactManagerProxy == undefined)
		contactManagerProxy = new Finatica.WebServices.ContactManager();
	var result = contactManagerProxy.RestoreFromBlackListNew(contactID, Finatica.ContactList.OnAddSucceeded, Finatica.ContactList.OnFailed, sender);
}

Finatica.ContactList.OnAddSucceeded = function(result, userContext, methodName) {

	switch (methodName) {
		case "AddContactNew":
			if (userContext != undefined && result == true) {
				$find(Finatica.Common.NotificatorID).addMessage('success', 'Запрос на добавление пользователя в контакты отправлен.');
				$(userContext).hide();
				$(userContext).parent().parent().find("a.delContact").show();
			}
			else {
				$find(Finatica.Common.NotificatorID).addMessage('error', 'Произошла ошибка.');
			}
			break;
		case "DeleteContactNew":
			if (userContext != undefined && result == true) {
				$find(Finatica.Common.NotificatorID).addMessage('success', 'Пользователь был успешно удален из списка контактов.');
				$(userContext).hide();
				$(userContext).parent().parent().find("a.addContact").show();
				if (Finatica.ContactList.deleteCard == true) {
					$(userContext).parent().parent().parent().parent().remove();
				}
			}
			else {
				$find(Finatica.Common.NotificatorID).addMessage('error', 'Произошла ошибка.');
			}
			break;
		case "RestoreFromBlackListNew":
			if (userContext != undefined && result == true) {
				$find(Finatica.Common.NotificatorID).addMessage('success', 'Пользователь был успешно удален из черного списка.');
			}
			else {
				$find(Finatica.Common.NotificatorID).addMessage('error', 'Произошла ошибка.');
			}
			break;
		case "SendMessage":
			Finatica.ContactList.closePopup();
			$find(Finatica.Common.NotificatorID).addMessage('success', Finatica.ContactList.sendMessageSuccessMsg);
			break;
	}
}

Finatica.ContactList.UnJoinCompany = function(userID, divID) {
	var joinCompanyServiceProxy = new Finatica.WebServices.CompanyHelper();
	joinCompanyServiceProxy.DeleteUserFromCompany(userID, Finatica.CompanyCard.companyID, Finatica.ContactList.OnUnJoinSucceeded, Finatica.ContactList.OnUnJoinFailed,divID);
}

Finatica.ContactList.OnUnJoinSucceeded = function(result, userContext, methodName) {
	$find(Finatica.Common.NotificatorID).addMessage('success', 'Пользователь был успешно удален из компании')
	$("#" + userContext).parent().remove();
}

Finatica.ContactList.OnUnJoinFailed = function(result, userContext, methodName) {
	$find(Finatica.Common.NotificatorID).addMessage('success', 'Ошибка удаления пользователя')
}

Finatica.ContactList.OpenSendMsg = function(contactID, sender) {
	var aHtml = $(sender).parent().parent().parent().parent().find("a.contactUserPic").html();
	var h3Html = $(sender).parent().parent().parent().parent().find("h3.contactName").html();
	var h3Text = $(sender).parent().parent().parent().parent().find("h3.contactName").text();
	$("div.sendMsg").find("div.recipientCard > a").html(aHtml);
	$("div.sendMsg").find("div.recipientCard > h3").html(h3Html);
	$("div.sendMsg").find("div.recipientCard > input[type=hidden]").val(contactID);
	$("div.sendMsg").find("span.titleName").html(h3Text);
	$find(Finatica.ContactList.rcbAttachProject).get_items().getItem(0).select();	
	$("div.sendMsg").find("textarea").text('');
	$(".overlayShadow").show();
	$("div.sendMsg").show();
}

Finatica.ContactList.changeSender = function() {
	$("#" + Finatica.ContactList.rlbCompaniesID).show();
	if ($("#" + Finatica.ContactList.rlbCompaniesID + " > label").length == 0)
		$("#" + Finatica.ContactList.rlbCompaniesID).prepend("<label>Выберите отправителя:</label>");
}

Finatica.ContactList.closePopup = function() {
	$("div.sendMsg").hide();
	$(".overlayShadow").hide();
}

Finatica.ContactList.OnFailed = function(error) {

}

Finatica.ContactList.companySelected = function(sender, args) {
	var selection = args.get_item().get_element();

	var iUserPic = $(selection).find("img.contactUserPic");
	var h3Html = $(selection).find("h3.contactName").html();
	var hiddenValue = $(selection).find("input[type=hidden]").val();

	$("div.senderDiv").find("a.contactUserPic > img").attr("src", iUserPic.attr("src"));
	$("div.senderDiv").find("h3.contactName").html(h3Html);
	$("div.senderDiv").find("input[type=hidden]").val(hiddenValue);

	if (Finatica.ContactList.rcbAttachProject != undefined && Finatica.ContactList.rcbAttachProject != null) {
		var projCombo = $find(Finatica.ContactList.rcbAttachProject);
		if (projCombo != null) {
			var projComboItems = projCombo.get_items();
			if (hiddenValue != null && hiddenValue.length > 0) {
				for (var i = 1; i < projComboItems.get_count(); i++) {
					var companyId = projComboItems.getItem(i).get_attributes().getAttribute("companyId");
					projComboItems.getItem(i).set_visible(companyId == hiddenValue);
				}
			}
			else {
				for (var i = 0; i < projComboItems.get_count(); i++) {
					projComboItems.getItem(i).set_visible(true);
				}
			}
			projComboItems.getItem(0).select();
		} 
	}

	$("#" + Finatica.ContactList.rlbCompaniesID).hide();
	$("div.senderDiv").show();
}

Finatica.ContactList.DDOpened = function(sender, eventArgs) {
	var dd = $(sender.get_dropDownElement()).parent();
	var input = sender.get_inputDomElement();
	$(dd).css("top", $(input).offset().top - $(dd).height() - $(document).scrollTop());
	$(dd).css("position", "fixed");
}

Finatica.ContactList.Send = function () {
    var attachedValue = $find(Finatica.ContactList.rcbAttachProject).get_selectedItem().get_value();
    if (attachedValue == '')
        attachedValue = Finatica.ContactList.emptyGuid;

    var companyId = $("div.senderDiv").find("input[type=hidden]").val();
    if (companyId == '')
        companyId = Finatica.ContactList.emptyGuid;

    var messageManagerProxy = new Finatica.WebServices.MessageManager();

    messageManagerProxy.SendMessage($("div.sendMsg").find("div.recipientCard > input[type=hidden]").val(),
										'',
										$find(Finatica.ContactList.rtbBodyID).get_value(),
										companyId,
										attachedValue,
										Finatica.ContactList.OnAddSucceeded,
										Finatica.ContactList.OnAddFailed);

    $find(Finatica.ContactList.rtbBodyID).set_value('');
    return false;
}
