﻿/// <reference path="~/Resources/js/jquery-1.3.2.min.js" />

var ContactCard = function(uxResults, uxResultsPanel) {
    this.uxResults = uxResults;
    this.uxResultsPanel = uxResultsPanel;

    var ShowContactCardResult =
		function(message) {
		    $(uxResults).show();
		    uxResults.innerHTML = message;

		    // Wire up escape key to hide the window
		    $("body").bind('keyup.hidecontactcard', function(e) {
		        if (e.which == 27) {
		            var behav = $find(uxResultsPanel);
		            behav.hide();
		            $("body").unbind('keyup.hidecontactcard');
		        }
		    });
		}

    var ShowContactCard_Complete =
		function(result) {
		    var html = result.d;
		    if (html == '') { html = "No contact information is available for this item"; }
		    ShowContactCardResult(html);
		}

	var ShowContactCard_Error =
		function(result) {
		    if (result == null || result.responseText == '') { return; }
		    var obj = Sys.Serialization.JavaScriptSerializer.deserialize(result.responseText);
		    ShowContactCardResult(obj.Message);
		}

    var ShowContactCard_Complete2 =
		function(result) 
		{
		    if (result.error) {
		        if (result.error.message == '') { return; }
		        ShowContactCardResult(result.error.Message);
		    }
		    else {
		        var html = result.value;
		        if (html == '') { html = "No contact information is available for this item"; }
		        ShowContactCardResult(html);
		    }
		}

    return {
        Show:
			function(addressBookItemID, sendMessagesFromAddressBookID) {
        ShowContactCardResult("<div class='loading'>Loading contact card...</div>");
        var behav = $find(uxResultsPanel);
        behav.show(); 
        RenderServicePro.GetContactCard(addressBookItemID, sendMessagesFromAddressBookID, ShowContactCard_Complete2);
    },

        ShowFromAddressBook:
			function(addressBookID, sendMessagesFromAddressBookID) {
        ShowContactCardResult("<div class='loading'>Loading contact card...</div>");
        var behav = $find(uxResultsPanel);
        behav.show(); 
        RenderServicePro.GetContactCardFromAddressBook(addressBookID, sendMessagesFromAddressBookID, ShowContactCard_Complete2);
    },

        Hide:
			function() {
			    var behav = $find(uxResultsPanel);
			    behav.hide();
			}
    }
}

var AddressBookItemService = function(sendButton, fromAddressBookID, onClose) {
    var SendButton = sendButton;
    var FromAddressBookID = fromAddressBookID;
    var OnClose = onClose;

    var Close =
		function() {
		    if (OnClose) { OnClose(); }
		}

    var ShowFeedback =
		function(message) {
		    alert(message);
		}

    var AddContact_Complete =
		function(result) {
		    if (result.error)
		        ShowFeedback("Sorry, this person could not be added to your contact list - " + result.error.Message);
		    else {
		        ShowFeedback('Thanks. This person has been added to your contact list');
		        
		        if (SendButton)
		            $(SendButton).hide();		        
		    }
		}

    var SendMessage_Complete =
		function(result) {
		    RemoveSendButtonThing();

		    if (result.error)
		        ShowFeedback('Sorry, your message could not be sent - ' + result.error.Message);
		    else
		        Close();
		}

    var HideSendButtonThing = function() {
        if (SendButton) {
            $(SendButton).addClass("sending");
            SendButton.disabled = true;
        }
    }

    var RemoveSendButtonThing = function() {
        if (SendButton) {
            $(SendButton).removeClass("sending");
            SendButton.disabled = false;
        }
    }

    return {
        SendMessageToAddressBookItem:
			function(msg, toAddressBookItemID) {
			    if (msg == '')
			        return;
			    HideSendButtonThing();
			    UpdateServicePro.SendMessage(FromAddressBookID, toAddressBookItemID, msg, SendMessage_Complete);
			},

        SendMessageToAddressBook:
			function(msg, toAddressBookID) {
			    if (msg == '')
			        return;
			    HideSendButtonThing();
			    UpdateServicePro.SendMessageToAddressBook(FromAddressBookID, toAddressBookID, msg, SendMessage_Complete);
			},

        AddContact:
			function(fromAddressBookItemID, toAddressBookID, copiedByPersonID) {
			    UpdateServicePro.CreateAddressBookItemFromAddressBookItem(fromAddressBookItemID, toAddressBookID, copiedByPersonID, AddContact_Complete);
			},

        ActivateContact:
		   function(addressBookItemID) {
		       UpdateServicePro.ActivateAddressBookItem(addressBookItemID, AddContact_Complete);
		   },

        AddContactFromAddressBook:
			function(fromAddressBookID, toAddressBookID, copiedByPersonID) {
                UpdateServicePro.CreateAddressBookItemFromAddressBook(fromAddressBookID, toAddressBookID, copiedByPersonID, AddContact_Complete);
			}
    }
}