﻿var receiveReq = getXmlHttpRequestObject();

function getXmlHttpRequestObject() {

	if (window.XMLHttpRequest) 
    {
		return new XMLHttpRequest();
	} 
    else if(window.ActiveXObject) 
    {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} 

//	if (window.XMLHttpRequest) {
//		return new XMLHttpRequest();
//	} else if(window.ActiveXObject) {
//		return new ActiveXObject("Microsoft.XMLHTTP");
//	} else {
//		//document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.  Consider upgrading your browser.';
//	}
}

function startChat(userid)
{
            var url = engUsersStandard_dev.GetEncryptedUserId().value;
            var server = engUsersStandard_dev.ChatServerURL().value;

            if (url != '' && server != '') {
                receiveReq.open("GET", '/controls/myChat/getChat.aspx?getFriends=1&' + url, true);
                window.open(server + "/chatModal.aspx?startChat=" + userid +'&'+url, "MyChat", "toolbar=0,location=0,menubar=0,status=0,scrollbars=0,resizable=0,width=654,height=542"); //url must always be the last parameter passed

                Effect.toggle('onlineFriendsContainer', 'blind', { duration: 0.5 });
            }
}

function loginToChat()
{
    if ($('viewOnlineFriendsHead') != null) {
        $('viewOnlineFriendsHead').innerHTML = 'You\'re logged into chat';
    }

    var url = engUsersStandard_dev.GetEncryptedUserId().value;
    var server = engUsersStandard_dev.ChatServerURL().value;

    if (url != '' && server != '') {
        window.open(server + "/chatModal.aspx?" + url, "MyChat", "toolbar=0,location=0,menubar=0,status=0,scrollbars=0,resizable=0,width=654,height=542"); //url must always be the last parameter passed

        Effect.toggle('onlineFriendsContainer', 'blind', { duration: 0.5 });
        document.getElementById('chatLogin').style.display = "none";
    }
}

function getOnlineFriends()
{    
    //onlineFriendsContainer = document.getElementById('onlineFriendsContainer');
    //onlineFriendsContainer.style.display = "block";
    if (document.getElementById('onlineFriendsContainer').style.display == "none")
    {        
        var onlineFriendsList = document.getElementById('onlineFriendsList');
		onlineFriendsList.innerHTML = "<li><a>Loading...</a></li>";
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
            var url = engUsersStandard_dev.GetEncryptedUserId().value;
            var server = engUsersStandard_dev.ChatServerURL().value;

            if (url != '' && server != '') {
                receiveReq.open("GET", '/controls/myChat/getChat.aspx?getFriends=1&' + url, true); //url must always be the last parameter passed
		        
                receiveReq.onreadystatechange = handleGetOnlineFriends;

		        receiveReq.send(null);
            }
	    }
	}
	else {
	    Effect.toggle('onlineFriendsContainer', 'blind', {duration: 0.5});
	}

	if (engUsersStandard_dev.IsUserOnline().value) {
	    if ($('chatLogin') != null) {
	        $('chatLogin').style.display = 'none';
	    }
	}
	else {
	    if ($('chatLogin') != null) {
	        $('chatLogin').style.display = 'block';
	    }
	}
}

function handleGetOnlineFriends()
{
	if (receiveReq.readyState == 4) {

	    var onlineFriendsList = document.getElementById('onlineFriendsList');
	    onlineFriendsList.innerHTML = "";

	    if (receiveReq.responseText != "") {

	        var response = eval("(" + receiveReq.responseText + ")");

	        if ((/MSIE (\d+\.\d+);/.test(navigator.userAgent))) {
	            var h = 50 + (response.friends.length * 25);

	            if (response.friends.length == 0)
                {
                    h = 75;
                }
	            
	            if ($('onlineFriendsContainer') != null) {
	                $('onlineFriendsContainer').style.height = h + 'px';
	            }
	        }

	        for (i = 0; i < response.friends.length; i++) {
	            response.friends[i].username = response.friends[i].u;
	            switch (response.friends[i].s) {
	                case "1":
	                    response.friends[i].status = "Available";
	                    break;
	                case "2":
	                    response.friends[i].status = "Away";
	                    break;
	                case "0":
	                    response.friends[i].status = "Busy";
	                    break;
	            }

	            if (response.friends[i].b >> 1 == 0)
	                response.friends[i].blocked = "0";
	            else
	                response.friends[i].blocked = "1";
	            if (response.friends[i].b & 1 == 1)
	                response.friends[i].online = "True";
	            else
	                response.friends[i].online = "False";

	            if (response.friends[i].online == "True") {
	                if (response.friends[i].status == "Available")
	                    onlineFriendsList.innerHTML += "<li><a class='available' href='javascript:startChat(" + response.friends[i].id + ");'>" + response.friends[i].username + "</a></li>";
	                else if (response.friends[i].status == "Away")
	                    onlineFriendsList.innerHTML += "<li><a class='away' href='javascript:startChat(" + response.friends[i].id + ");'>" + response.friends[i].username + "</a></li>";
	                else if (response.friends[i].status == "Busy")
	                    onlineFriendsList.innerHTML += "<li><a class='busy' href='javascript:startChat(" + response.friends[i].id + ");'>" + response.friends[i].username + "</a></li>";
	                else
	                    onlineFriendsList.innerHTML += "<li><a class='nostatus' href='javascript:startChat(" + response.friends[i].id + ");'>" + response.friends[i].username + "</a></li>";

	            }
	        }
	    }	

		if (onlineFriendsList.innerHTML == "")
		    onlineFriendsList.innerHTML = "<li><a>No friends online</a></li>";

		Effect.toggle('onlineFriendsContainer', 'blind', { duration: 0.5 });
	}
}
