﻿var friendListUrl = "Member/Friends.ashx";
var openChatWindows = [];
var refrenceToChatPanel;
var chatPanelIsOpen = false;
var onlineFriendsCount = 0;

function openWindow(name, openedFromChatPanel)
{
    var windowTitle = name;
    //Remove special characters from name   
    name = name.replace(/\/|\-|\./gi, "");   
  
    //Remove whitespaces from name   
    var whitespace = new RegExp("\\s","g");
    name = name.replace(whitespace,"");
    
    var chatPageUrl = '';
    if (openedFromChatPanel == true)
    { chatPageUrl = 'Chat.aspx?'; }
    else
    { chatPageUrl = 'Member/Chat.aspx?'; }
    
    if (indexOfChatWindow(openChatWindows, name) == -1)
    {
        var sFeatures = 'width=525,height=310,status=no';  
        var win = window.open(chatPageUrl+escape(windowTitle)+'|frame', name, sFeatures);
        openChatWindows[openChatWindows.length] = new ChatWindow(name, win);
        //win.arrOpenWindowsChat_aspx = openChatWindows;
        win.focus();
    }
    else
    {
        var index = indexOfChatWindow(openChatWindows, name);
        openChatWindows[index].Window.focus();
    }
}
function notifyForMessage(userName)
{
    openWindow(userName, false);
}
function updateOnlineFriends(onlineFriends)
{
    onlineFriendsCount = onlineFriends;
    var img = window.parent.frames[0].document.getElementById('imgFriendsOnline');
    var span = window.parent.frames[0].document.getElementById('spanFriendsOnline');
    if (img != null && onlineFriendsCount != 0)
    {
        img.src = '/images/dotGreen.GIF';
    }
    else
    {
        if (img != null)
        {
            img.src = '/images/dot.GIF';
        }
    }
    if (span != null && onlineFriendsCount != 0)
    {
        if (onlineFriendsCount == 1)
        {
            span.innerHTML = '&nbsp;' + onlineFriendsCount + ' friend is online.';
        }
        else
        {
            span.innerHTML = '&nbsp;' + onlineFriendsCount + ' friends are online.';
        }
        
    }
    else
    {
        if (span != null)
        {
            span.innerHTML = '&nbsp;0 friends are online.';
        }
    }
}

function startChatPanel()
{
    if(parent.frames['DefaultFrame'] != null)
    {
        var memberLoggedIn = parent.frames['DefaultFrame'].memberLoggedIn;
        if (memberLoggedIn == true)
        {
            var request = new Ajax.Request(friendListUrl, {method:'post', onSuccess: onResponseReceive});
        }
        else
        {
            onlineFriendsCount = 0;
        }
    }
}

function onResponseReceive(transport)
{
    // update chat panel
    if (chatPanelIsOpen == true)
    {
        refrenceToChatPanel.onResponseReceive(transport);
    }

    var response = transport.responseText;
    var friendList = response.evalJSON(true);
    var onlineFriends = 0;
     // for every user sending message (window name is same as user name)
    for (var i = 0; i < friendList.length; i++)
    {
        // update the chat panel
        if (friendList[i].IsOnline == true)
        {
            onlineFriends++;
            // if this user has sent a message
            if (friendList[i].HasSentMessage == true)
            {
                notifyForMessage(friendList[i].FriendID);
            }
        }
        else
        {
            
        }        
    }
    updateOnlineFriends(onlineFriends);    
}
//startChatPanel();
new PeriodicalExecuter(startChatPanel, 5);
