﻿// JScript File
var userTimer = "";
var msgTimer = "";
var loggedUserTimer = "";
var countChats = 0;
var timer = 4000;

startTimers();

function startTimers()
{
    userTimer = window.setInterval("updateUser()", timer);
    msgTimer = window.setInterval("updateMessages()", timer);
    loggedUserTimer = window.setInterval("verifyLoggedUsers()", 600000);//10 minutos
} 
function stopTimers()
{
	window.clearInterval (msgTimer);
	userTimer="";
	msgTimer="";
}

function verifyLoggedUsers(){
    $.ajax({
        type: "POST",
        url: "ChatWS.asmx/VerifyLoggedUsers",
        data: "{}",
        dataType: "html",
        success: function(response) {
            var resp = response;
        },
        error: function(x, e) {
            var error = x.status + e;
        }
    });
}

function openLogin(id){
    if ($get("divLogin").style.display == "none") {
        $get("divLogin").style.display = "block";
        $get("divChat0").style.display = "none";
        $.ajax({
            type: "POST",
            url: "ChatWS.asmx/SetAnnouncerID",
            data: "announcerID=" + id,
            dataType: "html",
            success: function(response) {
                var resp = cleanString(response);
                if(resp == "FALSE"){
                    $get("divLogin").style.display = "none";
                    $get("divChat0").style.display = "block";
                }
            },
            error: function(x, e) {
                var error = x.status + e;
            }
        });
    }
}

function startChat() {
    if($get("ctl00_txtLogin").value != ""){
        $get("btnLogin").disabled = true;
        $.ajax({
            type: "POST",
            url: "ChatWS.asmx/StartChat",
            data: "userID=" + $get("ctl00_txtLogin").value,
            dataType: "html",
            success: function(response) {
                if (cleanString(response) != "FAILED") {
                    startChatLayout(cleanString(response));
                } else {
                    if ($get("spanWarning").style.display == "none")
                        $get("spanWarning").style.display = "block";
                }

                $get("btnLogin").disabled = false;
            },
            error: function(x, e) {
                var error = x.status + e;
                $get("btnLogin").disabled = false;
            }
        });
    }
}

function startLoggedUserChat(id) {
    $.ajax({
        type: "POST",
        url: "ChatWS.asmx/StartLoggedUserChat",
        data: "receiver=" + id,
        dataType: "html",
        success: function(response) {
            var resp = cleanString(response);
            if(resp == "FAILED")
                alert("Você já está utilizando o máximo de caixas de conversação no momento.");
            else
                startChatLayout(resp);
        },
        error: function(x, e) {
            var error = x.status + e;
        }
    });
}

function startChatLayout(response) {
    response = cleanString(response).split('╩');
    
    if ($get("divLogin").style.display == "block")
        $get("divLogin").style.display = "none";
    if ($get("spanWarning").style.display == "block")
        $get("spanWarning").style.display = "none";
    if ($get("divChat" + response[0]).style.display == "none")
        $get("divChat" + response[0]).style.display = "block";
        
    $get("divConversation" + response[0]).innerHTML = "";
    $get("spanUser0").innerHTML = response[1];
    
    $get("btn" + response[0]).disabled = false;
    
    $get("ctl00_txtMsg" + response[0]).disabled = false;
    $get("ctl00_txtMsg" + response[0]).value = "";
    $get("ctl00_txtLogin").value = "";
}

function updateUser()
{
    $.ajax({
        type: "POST",
        url: "ChatWS.asmx/UpdateUser",
        data: "{}",
        dataType: "html",
        success: function(response) {
            cleanString(response);
        },
        error: function(x, e) {
            var error = x.status + e;
        }
    });
    $.ajax({
        type: "POST",
        url: "ChatWS.asmx/CountChats",
        data: "{}",
        dataType: "html",
        success: function(count) {
            countChats = cleanString(count);
        },
        error: function(x, e) {
            var error = x.status + e;
        }
    });
}

function updateMessages()
{
    for (var i = 0; i < countChats; i++) {
        $.ajax({
            type: "POST",
            url: "ChatWS.asmx/UpdateMessages",
            data: "chatID=" + i.toString(),
            dataType: "html",
            success: function(result) {
                result = cleanString(result);
                if (result.indexOf('╩') > -1 || result.indexOf('╦') > -1) {
                    if (result.indexOf('╩') > -1) {
                        response = result.split('╩');
                        if (response[1] != "")
                            $get("spanUser" + response[0]).innerHTML = response[1].split(':')[0];
                        $get("ctl00_txtMsg" + response[0]).disabled = false;
                        $get("btn" + response[0]).disabled = false;
                    } else if (result.split('╦').length == 3) {
                    response = result.split('╦');
                        $get("ctl00_txtMsg" + response[0]).disabled = true;
                        $get("btn" + response[0]).disabled = true;
                    }
                    UpdateMessages(result);
                }
            },
            error: function(x, e) {
                var error = x.responseText + e;
            }
        });
    }
}

function button_clicked(chatID) {
    if ($get("ctl00_txtMsg" + chatID).value != "") {
        var msg = $get("ctl00_txtMsg" + chatID).value;
        $get("ctl00_txtMsg" + chatID).value = "";

        $.ajax({
            type: "POST",
            url: "ChatWS.asmx/SendMessage",
            data: "msg=" + msg + "&chatID=" + chatID,
            dataType: "html",
            success: function(result) {
                $get("divConversation" + chatID).innerHTML += cleanString(result);
                scrollDown($get("divConversation" + chatID));
            },
            error: function(result) {
                errorCallback(result);

            }
        });
    }
}

function clickButton(e, buttonid)
{ 
	var bt = document.getElementById(buttonid); 
	if (typeof bt == 'object')
	{ 
		if(navigator.appName.indexOf("Netscape")>(-1))
		{ 
		    if (e.keyCode == 13)
		    { 
			    bt.click(); 
			    return false; 
		    } 
	    } 
        if (navigator.appName.indexOf("Microsoft Internet Explorer")>(-1))
	    { 
		    if (event.keyCode == 13)
		    { 
		        bt.click(); 
			    return false; 
		    } 
	    } 
    }	 
}

function close_window(chatID) {
    $.ajax({
        type: "POST",
        url: "ChatWS.asmx/CloseChat",
        data: "chatID=" + chatID,
        dataType: "html",
        success: function(response) {
            hide_window(cleanString(response).split('╠')[1]);
            updateMessages();
        },
        error: function(result) {
            errorCallback(result);
        }
    });
}

function hide_window(chatID) {
    $get("ctl00_txtMsg" + chatID).value = "";
    $get("divChat" + chatID).style.display = "none";
}

function UpdateMessages(result) {
    var chatID;
    var messages;
    
    if(result.indexOf("╩") > -1){
        response = result.split("╩");
        chatID = response[0];
        messages = response[2];
    }else{
        response = result.split("╦");
        chatID = response[0];
        messages = response[1];
    }
    
    if(messages != ""){
        $get("divConversation" + chatID).innerHTML = messages;

        if ($get("divChat" + chatID).style.display == "none") {
            $get("divChat" + chatID).style.display = "block";
            if ($get("ctl00_txtMsg" + chatID).disabled == true) {
                $get("ctl00_txtMsg" + chatID).disabled = false;
                $get("btn" + chatID).disabled = false;
            }
        }
        scrollDown($get("divConversation" + chatID));
    }
}

function errorCallback(result)
{
	alert("An error occurred while invoking the remote method: " + result);
}

function cleanString(result) {
    if(endsWith(result,"/>"))
        return trim(result.replace('<?xml version="1.0" encoding="utf-8"?>\r\n<string xmlns="http://tempuri.org/" />', ''));
    else{
        var returnString = trim(result.replace('<?xml version="1.0" encoding="utf-8"?>\r\n<string xmlns="http://tempuri.org/">', '').replace('</string>', ''));
        returnString = replaceAll(returnString, '%*$', '<');
        return replaceAll(returnString, '$*%', '>');
    }
}

function endsWith(mainString, endingString){
      if(endingString.length > mainString.length) return false;
        return mainString.indexOf(endingString)==(mainString.length-endingString.length);
}

function trim(str) {
    return str.replace(/^\s+|\s+$/g, ""); 
}

function replaceAll(original,stringToReplace, newString){
    while (original.indexOf(stringToReplace) != -1) {
        original = original.replace(stringToReplace, newString);
    }
    return original;
}


function scrollDown(object) {       

    object.scrollTop = object.scrollHeight;

}

