﻿var CurrentUsername = "";
var CurrentFirstname = "";
var CurrentUserPhoto = "";
var CurrentUserType = "";
var CurrentShortCountry = "";
var UserNameList = ",";
var HasMessageUsername = ",";
var OnlineUserList = "";
var MyFriendsInfo = "";
var MyGuestInfo = "";
var bRemoveMessage = false;

//登录服务器
function ChatConnectToServer()
{
    var box = '<img src="/images/Chat/GenericGray.jpg" title="Connecting..." />';
    $("#divChat").html(box);
    WebRequestInfo("/ChatSystem/RequestService.aspx?cmd=login&time=" + escape(new Date()),function(obj){ChatConnectToServerHandle(obj);}, "");
}

//登录服务器后的处理
function ChatConnectToServerHandle(objResult){
    if(objResult)
    {
        var result = objResult;
        result = $(result).find("status").text();

        if(result == "relogined" || result == "logined")
        {
            $("#divChat").html('<a href="" onmouseover="ShowChatBox()"><img id="imgGeneric" src="/images/Chat/Generic.jpg" title="Online" /></a>');

            CurrentUsername = $(objResult).find("UserInfo Username").text();
            CurrentFirstname = $(objResult).find("UserInfo Firstname").text();
            CurrentUserPhoto = $(objResult).find("UserInfo UserPhoto").text();
            CurrentUserType = $(objResult).find("UserInfo UserType").text();
            CurrentShortCountry = $(objResult).find("UserInfo ShortCountry").text();

            if(CurrentUserType != "Guest")
            {
                if(CurrentUserPhoto.indexOf("onlineuserphoto2") < 0)
                {
                    CurrentUserPhoto = "/UploadFile/MemberPhoto/" + CurrentUserPhoto;
                }
                
                var htmlTemplate = UserItemTemplate();
                var htmlResult = "";
                var htmlTemp = "";
            
                $(objResult).find("FriendInfo").each(function(){
                    var $objUserInfo = $(this);
                    if(UserNameList.indexOf("," + $objUserInfo.find('Username').text() + ",") < 0)
                    {
                        htmlTemp = htmlTemplate;
                        
                        if($objUserInfo.find('UserPhoto').text().indexOf("onlineuserphoto2") < 0)
                        {
                            htmlTemp = htmlTemp.replace("$UserPhoto$", "/UploadFile/MemberPhoto/" + $objUserInfo.find('UserPhoto').text());
                        }
                        else
                        {
                            htmlTemp = htmlTemp.replace("$UserPhoto$", $objUserInfo.find('UserPhoto').text());
                        }
                       
                        //htmlTemp = htmlTemp.replace("$UserPhoto$", $objUserInfo.find('UserPhoto').text());
                        htmlTemp = htmlTemp.replace("$CountryFlag$", $objUserInfo.find('CountryFlag').text());
                        htmlTemp = htmlTemp.replace("$Username$", $objUserInfo.find('Username').text());
                        htmlTemp = htmlTemp.replace("$Firstname$", $objUserInfo.find('Firstname').text());
                        htmlTemp = htmlTemp.replace("$UserType$", $objUserInfo.find('UserType').text());
                        htmlTemp = htmlTemp.replace("$UserFrom$", $objUserInfo.find('UserFrom').text());
                        htmlResult += htmlTemp;
                        UserNameList += $objUserInfo.find('Username').text() + ",";
                    }
                });
                
                if(MyFriendsInfo != htmlResult)
                {
                    MyFriendsInfo = htmlResult;
                    $("#hidMyFriendsInfo").val(htmlResult);
                }
            }
        }
        else if(result == "nosession")
        {
            WebRequestInfo("/ChatSystem/RequestService.aspx?cmd=login&time=" + escape(new Date()),function(obj){ChatConnectToServerHandle(obj);}, "");
        }
	}    
}

//每隔一段时间刷新
function RefreshOnlineStatus()
{    
    if($("#ChatOnlineUserList").attr("id") == "ChatOnlineUserList")
    {
        WebRequestInfoWithError("/ChatSystem/RequestService.aspx?cmd=refreshonlinestatus2&time=" + escape(new Date()),function(obj){RefreshOnlineStatusHandle2(obj);}, "", function(xml,status){RefreshOnlineStatusError(xml,status);});
    }
    else
    {
        WebRequestInfoWithError("/ChatSystem/RequestService.aspx?cmd=refreshonlinestatus&time=" + escape(new Date()),function(obj){RefreshOnlineStatusHandle(obj);}, "", function(xml,status){RefreshOnlineStatusError(xml,status);});
    }
}

//每隔一段时间刷新后的处理事件
function RefreshOnlineStatusHandle(objResult)
{
    if(objResult)
    {
        var result = objResult;
	    
        var htmlTemplate = UserItemTemplate();
        var htmlResult = "";
        var htmlTemp = "";
        var status = $(result).find("status").text();
        
        if(status == "refreshed")
        {
            if($("#divChatGuest").attr("id") == "divChatGuest")
            {
                if($(result).find("MessageUsers").length)
                {
                    $(result).find("MessageUserInfo").each(function(){
                    
                        var $objUserInfo = $(this);
                                       
                        if(UserNameList.indexOf("," + $objUserInfo.find('Username').text() + ",") < 0)
                        {
                            htmlTemp = htmlTemplate;
                            htmlTemp = htmlTemp.replace("$UserPhoto$", $objUserInfo.find('UserPhoto').text());
                            htmlTemp = htmlTemp.replace("$CountryFlag$", $objUserInfo.find('CountryFlag').text());
                            htmlTemp = htmlTemp.replace("$Username$", $objUserInfo.find('Username').text());
                            htmlTemp = htmlTemp.replace("$Firstname$", $objUserInfo.find('Firstname').text());
                            htmlTemp = htmlTemp.replace("$UserType$", $objUserInfo.find('UserType').text());
                            htmlTemp = htmlTemp.replace("$UserFrom$", $objUserInfo.find('UserFrom').text());
                            htmlTemp = htmlTemp.replace("$Username$", $objUserInfo.find('Username').text());
                            htmlResult += htmlTemp;
                            UserNameList += $objUserInfo.find('Username').text() + ",";
                            HasMessageUsername += $objUserInfo.find('Username').text() + ",";
                            bRemoveMessage = false;
                        }
                        else if(HasMessageUsername.indexOf("," + $objUserInfo.find('Username').text() + ",") < 0)
                        {
                            HasMessageUsername += $objUserInfo.find('Username').text() + ",";
                        }
                    });
                    
                    if(MyGuestInfo != htmlResult)
                    {
                        $("#divChatGuest").append(htmlResult);
                        MyGuestInfo = htmlResult;
                    }
                    
                    FlashMessage();
                }
                else
                {
                    HasMessageUsername = "";
                    
                    if(!bRemoveMessage)
                    {
                        bRemoveMessage = RemoveMessage();
                    }
                }
            }
            else
            {
                if($(result).find("MessageUsers").length)
                {
                    $("#imgGeneric").attr("src", "/images/chat/Generic.gif");
                }
                else
                {
                    $("#imgGeneric").attr("src", "/images/chat/Generic.jpg");
                }
            }
        }
        else if(status == "nosession")
        {
            WebRequestInfo("/ChatSystem/RequestService.aspx?cmd=login&time=" + escape(new Date()),function(obj){ChatConnectToServerHandle(obj);}, "");
        }
    }
}

//每隔一段时间刷新后的处理事件
function RefreshOnlineStatusHandle2(objResult)
{
    if(objResult)
    {
        var result = objResult;
	    
        var htmlTemplate = OnlineUserListTemplate();
        var htmlResult = "";
        var htmlTemp = "";
        var status = $(result).find("status").text();
        
        if(status == "refreshed")
        {            
            $(result).find("UserInfo").each(function(){
                var $objUserInfo = $(this);
                htmlTemp = htmlTemplate;
                
                if($objUserInfo.find('UserType').text() == "/images/chat/xskn_usertype_M_20.png")
                {
                    if($objUserInfo.find('UserPhoto').text().indexOf("onlineuserphoto2") < 0)
                    {
                        htmlTemp = htmlTemp.replace("$UserPhoto$", "/UploadFile/MemberPhoto/" + $objUserInfo.find('UserPhoto').text());
                    }
                    else
                    {
                        htmlTemp = htmlTemp.replace("$UserPhoto$", $objUserInfo.find('UserPhoto').text());
                    }
                }
                else
                {
                    htmlTemp = htmlTemp.replace("$UserPhoto$", $objUserInfo.find('UserPhoto').text());
                }
                
                htmlTemp = htmlTemp.replace("$CountryFlag$", $objUserInfo.find('CountryFlag').text());
                htmlTemp = htmlTemp.replace("$Username$", $objUserInfo.find('Username').text());
                htmlTemp = htmlTemp.replace("$Firstname$", $objUserInfo.find('Firstname').text());
                htmlTemp = htmlTemp.replace("$UserType$", $objUserInfo.find('UserType').text());
                htmlTemp = htmlTemp.replace("$UserFrom$", $objUserInfo.find('UserFrom').text());
                htmlResult += htmlTemp;
            });
            
            if(OnlineUserList != htmlResult)
            {
                OnlineUserList = htmlResult;
                $("#ChatOnlineUserList").html(htmlResult);
            }
            
            htmlTemplate = UserItemTemplate();
            htmlResult = "";
            
            if($("#divChatGuest").attr("id") == "divChatGuest")
            {
                if($(result).find("MessageUsers").length)
                {
                    $(result).find("MessageUserInfo").each(function(){
                        var $objUserInfo = $(this);                
                        if(UserNameList.indexOf("," + $objUserInfo.find('Username').text() + ",") < 0)
                        {
                            htmlTemp = htmlTemplate;
                            htmlTemp = htmlTemp.replace("$UserPhoto$", $objUserInfo.find('UserPhoto').text());
                            htmlTemp = htmlTemp.replace("$CountryFlag$", $objUserInfo.find('CountryFlag').text());
                            htmlTemp = htmlTemp.replace("$Username$", $objUserInfo.find('Username').text());
                            htmlTemp = htmlTemp.replace("$Firstname$", $objUserInfo.find('Firstname').text());
                            htmlTemp = htmlTemp.replace("$UserType$", $objUserInfo.find('UserType').text());
                            htmlTemp = htmlTemp.replace("$UserFrom$", $objUserInfo.find('UserFrom').text());
                            htmlTemp = htmlTemp.replace("$Username$", $objUserInfo.find('Username').text());
                            htmlResult += htmlTemp;
                            UserNameList += $objUserInfo.find('Username').text() + ",";
                            HasMessageUsername += $objUserInfo.find('Username').text() + ",";    
                            bRemoveMessage = false;
                        }
                        else if(HasMessageUsername.indexOf("," + $objUserInfo.find('Username').text() + ",") < 0)
                        {
                            HasMessageUsername += $objUserInfo.find('Username').text() + ",";
                        }
                    });
                    
                    if(MyGuestInfo != htmlResult)
                    {
                        $("#divChatGuest").append(htmlResult);
                        MyGuestInfo = htmlResult;
                    }
                    
                    FlashMessage();
                }
                else
                {
                    HasMessageUsername = "";
                    
                    if(!bRemoveMessage)
                    {
                        bRemoveMessage = RemoveMessage();
                    }
                }
            }
            else
            {
                if($(result).find("MessageUsers").length)
                {
                    $("#imgGeneric").attr("src", "/images/chat/Generic.gif");
                }
                else
                {
                    $("#imgGeneric").attr("src", "/images/chat/Generic.jpg");
                }
            }
        }
        else if(status == "nosession")
        {
            WebRequestInfo("/ChatSystem/RequestService.aspx?cmd=login&time=" + escape(new Date()),function(obj){ChatConnectToServerHandle(obj);}, "");
        }
    }
}

function RefreshOnlineStatusError(xml,status)
{
    if(status=='error'){
        try{
            var json = eval('(' + xml.responseText + ')');
            alert(json.Message+'\n'+json.StackTrace);
        }
        catch(e){}
    }else{
        alert(status);
    }
}

//打开对话窗口
function TalkToUser(TalkToUsername)
{
    var TimeNow = new Date();
    var Temp = TimeNow.getYear() + TimeNow.getMonth() + TimeNow.getDate() + TimeNow.getHours() + TimeNow.getMinutes() + TimeNow.getSeconds() + TimeNow.getMilliseconds()
	window.open("/ChatSystem/Chat.aspx?talkto=" + TalkToUsername,Temp,"height=450,width=520,status=yes,toolbar=no,menubar=no,location=no");
}
function ClickTalkToUser(TalkToUsername)
{
    TalkToUser(TalkToUsername);
    HasMessageUsername = HasMessageUsername.replace("," + TalkToUsername + ",", ",");
    $("#chat" + TalkToUsername).removeAttr("style");
}

//在线用户列表的Html模版
function OnlineUserListTemplate()
{
    var html = "";
    html += "<div class=\"ChatOnlineUser\">";
    html +=     "<div style=\"float:left; width:35px; height:35px; text-align:center;\"><img src=\"$UserPhoto$\" width=\"30\" /><br /><img src=\"$CountryFlag$\" width=\"30px\" /></div>";
    html +=     "<div style=\"float:left; width:145px;\">";
    html +=         "<table border=\"0\" width=\"100%\" cellpadding=\"2\" cellspacing=\"0\">";
    html +=             "<tr>";
    html +=                 "<td><a href=\"javascript:TalkToUser('$Username$');\">$Firstname$</a></td>";
    html +=                 "<td align=\"right\"><img src=\"$UserType$\" /></td>";
    html +=             "</tr>";
    html +=             "<tr>"
    html +=                 "<td colspan=\"2\">";
    html +=                     "$UserFrom$";
    html +=                 "</td>";
    html +=             "</tr>";
    html +=         "</table>";
    html +=     "</div>";
    html += "</div>";
    
    return html;
}

//好友列表的用户信息模版
function UserItemTemplate()
{
    var html = "";
    
    html +=                 "<li id=\"chat$Username$\">";
    html +=                     "<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">";
	html +=                         "<tr>";
	html +=                             "<td style=\"width:10px; font-family:Verdana; font-size:10px;\">></td>";
	html +=                             "<td style=\"width:30px;\"><img src=\"$UserPhoto$\" width=\"25\" /></td>";
	html +=                             "<td><a href=\"javascript:ClickTalkToUser('$Username$');\" style=\"color:#5876A0; text-decoration:none;\">$Firstname$</a></td>";
	html +=                             "<td style=\"width:20px;\"><img src=\"$UserType$\" /></td>";
	html +=                         "</tr>";
	html +=                     "</table>";
    html +=                 "</li>";
    
    return html;
}

//显示好友列表的HTML
function ShowChatBox()
{
    var html = "";
    html += "<table id=\"tableChat\" border=\"0\" width=\"150\" style=\"border:solid 1px #799ED2;\" cellpadding=\"3\" cellspacing=\"0\" style=\"font-family:Arial;font-size:12px;\">";
    html +=     "<tr><td style=\"background:#648AC0; color:White;\"><table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tr><td>iPlayLounge</td><td aligh=\"right\"><a href=\"javascript:HidChatBox();\"><img src=\"/images/imm_01.gif\" /></a></td></tr></table></td></tr>";
    html +=     "<tr>";
	html +=         "<td style=\"background:#799ED2; color:White;\">";
	html +=             "<table border=\"0\" width=\"100%\">";
	html +=                 "<tr>";
	html +=                     "<td style=\"width:50px;\"><img src=\"" + CurrentUserPhoto + "\" width=\"40\" /></td>";
	html +=                     "<td align=\"left\" valign=\"top\">" + CurrentFirstname + "</td>";
	html +=                 "</tr>";
	html +=             "</table>";
	html +=         "</td>";
    html +=     "</tr>";
    html +=     "<tr>";
	html +=         "<td style=\"color:#5876A0;\">";
    html +=             "<ul id=\"divChatMyFriends\" style=\"margin:0px; padding:0px; list-style:none;\">";
    html +=                 "<li>";
    html +=                     "<table border=\"0\" width=\"100%\" cellspacing=\"0\"><tr><td style=\"color:#5876A0; background:#E3EBF5;\">My Friends</td></tr></table>";
    html +=                 "</li>";
    html +=             "</ul>";
    html +=             "<ul id=\"divChatGuest\" style=\"margin:0px; padding:0px; list-style:none;\">";
    html +=                 "<li>";
    html +=                     "<table border=\"0\" width=\"100%\" cellspacing=\"0\"><tr><td style=\"color:#5876A0; background:#E3EBF5;\">Strangers</td></tr></table>";
    html +=                 "</li>";
    html +=             "</ul>";
    html +=         "</td>";
	html +=     "</tr>";
	html +=     "<tr>";
	html +=         "<td style=\"color:#ffffff; background:#799ED2;\" align=\"center\">";
	html +=             "[Log out]";
    html +=         "</td>";
	html +=     "</tr>";
	html += "</table>";
	
	//alert(CurrentFirstname);
	
	$("#divChat").html(html);
	
	if(CurrentUserType != "Guest")
    {
        $("#divChatMyFriends").append(MyFriendsInfo);
        $("#divChatMyFriends").show();
    }
    else
    {
        $("#divChatMyFriends").hide();
    }
    
    $("#divChatGuest").append(MyGuestInfo);
    
    FlashMessage();
}

//关闭好友列表窗口,恢复Logo方式
function HidChatBox()
{
    $("#divChat").html('<a href="" onmouseover="ShowChatBox()"><img id="imgGeneric" src="/images/Chat/Generic.jpg" title="Online" /></a>');
}

function FlashMessage()
{
    var usernamearray = HasMessageUsername.split(",");
    
    for(var i = 1; i < usernamearray.length - 1; i++)
    {
        $("#chat" + usernamearray[i]).attr("style", "background:url(/images/chat/BackGround.gif);");
    }
}

function RemoveMessage()
{    
    var usernamearray = UserNameList.split(",");
    
    for(var i = 1; i < usernamearray.length - 1; i++)
    {
        $("#chat" + usernamearray[i]).removeAttr("style");
    }
    
    return true;
}

function RemoveFlashMessage(Username)
{
    HasMessageUsername = HasMessageUsername.replace("," + Username + ",", ",");
    $("#chat" + Username).removeAttr("style");
}

$(document).ready(function(){
    
    ChatConnectToServer();
    
    $('body').everyTime('2s',RefreshOnlineStatus);
    
    var menuYloc = $("#divChat").offset().top;
    $(window).scroll(function (){ 
        var offsetTop = menuYloc + $(window).scrollTop() +"px";        
        $("#divChat").animate({top : offsetTop },{ duration:600 , queue:false });
    });
});
