
var urlstart;
var c = 0;
var t;
var timer_is_on = 0;

var windowFocus = true;
var username;
var usernameTo;
var userIdTo;
var userId;
var msg;
var users = new Array();
var usernames = new Array();
var hightlight = new Array();
var helpuser;
var imagenum;
var pc;

var chatHeartbeatCount = 0;
var minChatHeartbeat = 1000;
var maxChatHeartbeat = 33000;
var chatHeartbeatTime = minChatHeartbeat;
var originalTitle;
var blinkOrder = 0;

var chatboxFocus = new Array();
var newMessages = new Array();
var newMessagesWin = new Array();
var chatBoxes = new Array();
var MyId;



$(document).ready(function() {

urlstart = "http://" + window.location.host;


    popChat();
    originalTitle = document.title;
    startChatSession();

    $([window, document]).blur(function() {
        windowFocus = false;
    }).focus(function() {
        windowFocus = true;
        document.title = originalTitle;
    });
});

function setMyId(id) {
    MyId = id;
}

function popChat() {


    var results = "";
    var params = '{"userId":"' + MyId + '"}';
    $.ajax({
        type: 'POST'
                , url: urlstart + '/ChatWebService.asmx/ChatPop'
                , contentType: 'application/json; charset=utf-8'
                , dataType: "json"
                , data: params
                , success: function(data, status) {
                    results = data.d;
                    if (results != "") {
                        var popUsers = results.split(',');
                        var j = 0;
                        for (j; j < popUsers.length - 1; j++) {
                            var userdet = popUsers[j].split('|');


                            chatWith(userdet[1], userdet[4], userdet[0], userdet[3], userdet[2], userdet[5]);







                        }
                    }
                    pc = setTimeout("popChat()", 10000);
                }

    }
            );


}

function restructureChatBoxes() {
    align = 0;
    for (x in chatBoxes) {
        chatboxtitle = chatBoxes[x];

        if ($("#chatbox_" + chatboxtitle).css('display') != 'none') {
            if (align == 0) {
                $("#chatbox_" + chatboxtitle).css('right', '250px');

            } else {
                width = (align) * (225 + 7) + 250;
                $("#chatbox_" + chatboxtitle).css('right', width + 'px');

            }
            align++;
        }
    }
}

function chatWith(chatuserTo, chatuserName, chatIdTo, chatuserId, sms, time) {
    users[users.length] = chatIdTo;
    usernames[usernames.length] = chatuserTo;
    //doTimer();
    msg = sms;

    username = chatuserName;
    userId = chatuserId;
    userIdTo = chatIdTo;
    createChatBox(chatuserTo, userIdTo, time);
    $("#chatbox_" + chatuserTo + " .chatboxtextarea").focus();
}

function createChatBox(chatboxtitle, userIdTo1, time, minimizeChatBox) {
    if ($("#chatbox_" + chatboxtitle).length > 0) {
        if ($("#chatbox_" + chatboxtitle).css('display') == 'none') {
            $("#chatbox_" + chatboxtitle).css('display', 'block');
            restructureChatBoxes();
        }
        $("#chatbox_" + chatboxtitle + " .chatboxtextarea").focus();
        return;
    }   

    $(" <div />").attr("id", "chatbox_" + chatboxtitle)
	.addClass("chatbox")
	.html('<div class="chatboxhead"><div class="chatboxtitle"><img id="img' + chatboxtitle + '" src="' + urlstart + '/App_Themes/SportNow/img/IMN.PNG"/>   ' + chatboxtitle + '</div><div class="chatboxoptions"><a href="javascript:void(0)" onclick="javascript:toggleChatBoxGrowth(\'' + chatboxtitle + '\')">-</a> <a href="javascript:void(0)" onclick="javascript:closeChatBox(\'' + chatboxtitle + '\')">X</a></div><br clear="all"/></div><div class="chatboxcontent"></div><div class="chatboxinput"><textarea class="chatboxtextarea" onkeydown="javascript:return checkChatBoxInputKey(event,this,\'' + chatboxtitle + '\',\'' + userIdTo1 + '\');"></textarea></div>')
	.appendTo($("body"));


    var iId = "chatbox_" + chatboxtitle;


    $("#chatbox_" + chatboxtitle).css('bottom', '0px');
    

    chatBoxeslength = 0;

    for (x in chatBoxes) {
        if ($("#chatbox_" + chatBoxes[x]).css('display') != 'none') {
            chatBoxeslength++;
        }
    }

    if (chatBoxeslength == 0) {
        $("#chatbox_" + chatboxtitle).css('right', '250px');
    } else {
        width = (chatBoxeslength) * (225 + 7) + 250;
        $("#chatbox_" + chatboxtitle).css('right', width + 'px');
    }

    chatBoxes.push(chatboxtitle);

    if (minimizeChatBox == 1) {
        minimizedChatBoxes = new Array();

        if ($.cookie('chatbox_minimized')) {
            minimizedChatBoxes = $.cookie('chatbox_minimized').split(/\|/);
        }
        minimize = 0;
        for (j = 0; j < minimizedChatBoxes.length; j++) {
            if (minimizedChatBoxes[j] == chatboxtitle) {
                minimize = 1;
            }
        }

        if (minimize == 1) {
            $('#chatbox_' + chatboxtitle + ' .chatboxcontent').css('display', 'none');
            $('#chatbox_' + chatboxtitle + ' .chatboxinput').css('display', 'none');
        }
    }

    chatboxFocus[chatboxtitle] = false;

    $("#chatbox_" + chatboxtitle + " .chatboxtextarea").blur(function() {
        chatboxFocus[chatboxtitle] = false;
        $("#chatbox_" + chatboxtitle + " .chatboxtextarea").removeClass('chatboxtextareaselected');
    }).focus(function() {
        chatboxFocus[chatboxtitle] = true;
        newMessages[chatboxtitle] = false;
        $('#chatbox_' + chatboxtitle + ' .chatboxhead').removeClass('chatboxblink');
        $("#chatbox_" + chatboxtitle + " .chatboxtextarea").addClass('chatboxtextareaselected');
    });

    $("#chatbox_" + chatboxtitle).click(function() {
        if ($('#chatbox_' + chatboxtitle + ' .chatboxcontent').css('display') != 'none') {
            $("#chatbox_" + chatboxtitle + " .chatboxtextarea").focus();
        }
    });

    $("#chatbox_" + chatboxtitle).show();

    

    var params = '{"userName":"' + chatboxtitle + '"}';
    $.ajax({
        type: 'POST'
                                        , url: urlstart + '/ChatWebService.asmx/IsOnline'
                                        , contentType: 'application/json; charset=utf-8'
                                        , dataType: "json"
                                        , data: params
                                        , success: function(data, status) {
                                            var img = document.getElementById("img" + chatboxtitle);
                                            if (data.d == "online") {
                                                img.src = urlstart + "/App_Themes/SportNow/img/IMNON.PNG";
                                            }
                                            else {
                                                img.src = urlstart + "/App_Themes/SportNow/img/IMNOFF.PNG";
                                            }

                                        }

    }
                                    );




    getUserMessages(time);


}



function getUserMessages(time) {
    var i = 0;

    for (i; i < users.length; i++) {

        var results = "";
        var params = '{"userId":"' + userId + '","userToId":"' + users[i] + '"}';
        $.ajax({
            type: 'POST'
                , url: urlstart + '/ChatWebService.asmx/GetChatMessage'
                , contentType: 'application/json; charset=utf-8'
                , dataType: "json"
                , data: params
                , success: function(data, status) {
                    results = data.d;

                    if (results != "") {
                        
                        var name = results.split(')(');
                        var arr = name[2].split('|');
                        var i = 0;



                        for (i; i < arr.length - 1; i++) {
                            usernameTo = name[0];
                            // var img = document.createElement("img");
                            var img = document.getElementById("img" + usernameTo);

                            $("#chatbox_" + usernameTo + " .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">' + usernameTo + ':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">' + arr[i] + '</span></div>');
                            $("#chatbox_" + usernameTo + " .chatboxcontent").scrollTop($("#chatbox_" + usernameTo + " .chatboxcontent")[0].scrollHeight);

                            if (name[1] == "online")
                                img.src = urlstart + "/App_Themes/SportNow/img/IMNON.PNG";
                            else
                                img.src = urlstart + "/App_Themes/SportNow/img/IMNOFF.PNG";

                            
                            if ((!((time == "0") ||(time == null)))&&(name[1] == "offline"))
                                $("#chatbox_" + usernameTo + " .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom"></span><span class="chatboxmessagecontent"><div class="tarig">' + time + '</div></span></div>');
                            $("#chatbox_" + usernameTo + " .chatboxcontent").scrollTop($("#chatbox_" + usernameTo + " .chatboxcontent")[0].scrollHeight);

                        }

                    }

                }

        }
            );



    }
    t = setTimeout("getUserMessages()", 1000);
}

function chatHeartbeat() {

    var itemsfound = 0;

    if (windowFocus == false) {

        var blinkNumber = 0;
        var titleChanged = 0;
        for (x in newMessagesWin) {
            if (newMessagesWin[x] == true) {
                ++blinkNumber;
                if (blinkNumber >= blinkOrder) {
                    document.title = x + ' says...';
                    titleChanged = 1;
                    break;
                }
            }
        }

        if (titleChanged == 0) {
            document.title = originalTitle;
            blinkOrder = 0;
        } else {
            ++blinkOrder;
        }

    } else {
        for (x in newMessagesWin) {
            newMessagesWin[x] = false;
        }
    }

    for (x in newMessages) {
        if (newMessages[x] == true) {
            if (chatboxFocus[x] == false) {
                //FIXME: add toggle all or none policy, otherwise it looks funny
                $('#chatbox_' + x + ' .chatboxhead').toggleClass('chatboxblink');
            }
        }
    }
}

function closeChatBox(chatboxtitle) {
    $('#chatbox_' + chatboxtitle).css('display', 'none');
    restructureChatBoxes();

}

function toggleChatBoxGrowth(chatboxtitle) {
    if ($('#chatbox_' + chatboxtitle + ' .chatboxcontent').css('display') == 'none') {

        var minimizedChatBoxes = new Array();

        if ($.cookie('chatbox_minimized')) {
            minimizedChatBoxes = $.cookie('chatbox_minimized').split(/\|/);
        }

        var newCookie = '';

        for (i = 0; i < minimizedChatBoxes.length; i++) {
            if (minimizedChatBoxes[i] != chatboxtitle) {
                newCookie += chatboxtitle + '|';
            }
        }

        newCookie = newCookie.slice(0, -1)


        $.cookie('chatbox_minimized', newCookie);
        $('#chatbox_' + chatboxtitle + ' .chatboxcontent').css('display', 'block');
        $('#chatbox_' + chatboxtitle + ' .chatboxinput').css('display', 'block');
        $("#chatbox_" + chatboxtitle + " .chatboxcontent").scrollTop($("#chatbox_" + chatboxtitle + " .chatboxcontent")[0].scrollHeight);
    } else {

        var newCookie = chatboxtitle;

        if ($.cookie('chatbox_minimized')) {
            newCookie += '|' + $.cookie('chatbox_minimized');
        }


        $.cookie('chatbox_minimized', newCookie);
        $('#chatbox_' + chatboxtitle + ' .chatboxcontent').css('display', 'none');
        $('#chatbox_' + chatboxtitle + ' .chatboxinput').css('display', 'none');
    }

}



function checkChatBoxInputKey(event, chatboxtextarea, chatboxtitle, userIdTo) {

    if (event.keyCode == 13 && event.shiftKey == 0) {
        message = $(chatboxtextarea).val();
        message = message.replace(/^\s+|\s+$/g, "");


        $(chatboxtextarea).val('');
        $(chatboxtextarea).focus();
        $(chatboxtextarea).css('height', '44px');


        if (message != '') {
            $("#chatbox_" + chatboxtitle + " .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">' + username + ':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">' + message + '</span></div>');
            $("#chatbox_" + chatboxtitle + " .chatboxcontent").scrollTop($("#chatbox_" + chatboxtitle + " .chatboxcontent")[0].scrollHeight);
        }


        chatHeartbeatTime = minChatHeartbeat;
        chatHeartbeatCount = 1;


        var params = '{"userId":"' + userId + '","userToId":"' + userIdTo + '","msg":"' + message + '"}';
        $.ajax({
            type: 'POST'
                , url: urlstart + '/ChatWebService.asmx/InsertChatMessage'
                , contentType: 'application/json; charset=utf-8'
                , dataType: "json"
                , data: params
                , success: function(data, status) {

                }

        }
            );
        return false;
    }



    var adjustedHeight = chatboxtextarea.clientHeight;
    var maxHeight = 94;

    if (maxHeight > adjustedHeight) {
        adjustedHeight = Math.max(chatboxtextarea.scrollHeight, adjustedHeight);
        if (maxHeight)
            adjustedHeight = Math.min(maxHeight, adjustedHeight);
        if (adjustedHeight > chatboxtextarea.clientHeight)
            $(chatboxtextarea).css('height', adjustedHeight + 8 + 'px');
    } else {
        $(chatboxtextarea).css('overflow', 'auto');
    }

}

function startChatSession() {

}



jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};



