﻿//-----------------------------------------------------------------------
// <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 OnUserAuthenticated(e) {
    if (messengerUserToken != null)
    {
        // Authenticated by invoking sign in button
        window.location = "MessengerWebToolkit/Handlers/HandleConsent.ashx?usertoken=" + escape(messengerUserToken);
        return;
    }
    messengerUser = e.get_user();
    messengerUser.add_signInCompleted(OnUserSignedIn);
    messengerUser.add_signOutCompleted(OnUserSignedOut);
    messengerUser.add_signedOutRemotely(OnUserSignedOut);

    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;
            }
            Array.add(arr, 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;
            }
            Array.add(arr, 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.');
    }
}
