﻿//-----------------------------------------------------------------------
// <copyright file="MessengerUser.js" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//-----------------------------------------------------------------------

var messengerUserAvailable = false;
var messengerUser = null;
var messengerUserToken = null;

var signOutLocation = 'MessengerWebToolkit/Handlers/Signout.ashx';

function OnUserSignedIn(sender, e) {
    if (e.get_resultCode() == Microsoft.Live.Messenger.SignInResultCode.success) {
        if (typeof (InvokeOnUserSignIn) == 'function') {
            InvokeOnUserSignIn();
        }
    }
    else {
        OnUserSignedOut();
    }
}

function OnUserSignedOut() {
    window.location = signOutLocation;
}

function OnUserConsentCompleted(e) {
      messengerUserToken = e.get_consentToken();
}

function OnInvitationSent(sender, e) {
    switch(e.get_resultCode()) {
        case Microsoft.Live.Messenger.SendInvitationResultCode.success:
            alert('The invitation was sent successfully.');
            break;
        case Microsoft.Live.Messenger.SendInvitationResultCode.applicationNotAllowed:
            alert('Your application needs to be enabled to send invitations. Please refer to the documentation for more details.');
            break;
        default:
            alert('The invitation could not be delivered.');
            break;
    }
}

function OnUserAuthenticated(e) {
    messengerUser = e.get_user();
    messengerUser.add_signInCompleted(OnUserSignedIn);
    messengerUser.add_signOutCompleted(OnUserSignedOut);
    messengerUser.add_signedOutRemotely(OnUserSignedOut);
    messengerUser.add_sendInvitationCompleted(OnInvitationSent);

    messengerUserAvailable = true;
}

function IsMessengerUserSignedIn() {
    return (messengerUserAvailable && messengerUser.get_status() == Microsoft.Live.Messenger.UserStatus.signedIn)
}

function IsCurrentUser(userId) {
    return (messengerUser.get_address().get_cid() == userId)
}

function SignOutMessengerUser() {
    if (IsMessengerUserSignedIn) {
        messengerUser.signOut(Microsoft.Live.Messenger.SignOutLocations.local);
    }

    return true;
}

function GetOnlineContactsByCid() {
    var arr = new Array();
    if (messengerUser.get_status() == Microsoft.Live.Messenger.UserStatus.signedIn) {        
        for (i = 0; i < messengerUser.get_onlineContacts().get_count(); i++) {
            var cid = messengerUser.get_onlineContacts().get_item(i).get_cid();
            if (cid.length == 0) {
                continue;
            }
            arr.add(cid);
        }
    }
    return arr;
}

function GetMessengerContactsByCid() {
    var arr = new Array();
    if (messengerUser.get_status() == Microsoft.Live.Messenger.UserStatus.signedIn) {        
        for (i = 0; i < messengerUser.get_contacts().get_count(); i++) {
            var cid = messengerUser.get_contacts().get_item(i).get_cid();
            if (cid.length == 0) {
                continue;
            }
            arr.add(cid);
        }
    }
    return arr;
}

function CreateConversation(cid) {
    if (IsMessengerUserSignedIn()) {
        var contact = messengerUser.get_onlineContacts().findByCid(cid);
        if (contact) {
            messengerUser.get_conversations().create(contact);
        }
        else {
            alert('Please select an online contact to start a conversation.');
            return;
        }
    }
    else {
        alert('Please sign in to start a conversation.');
    }
}