﻿// JScript File
function processAjaxResponse(xmlresponse, idx) {
    switch(idx) {
        case 0:
            //interface theme
            break;            
        case 1:
            var msg = {};
            var jsonresponse = null;              
            jsonresponse = JSON.parse(xmlresponse);                 
            if (jsonresponse !== null) {
                if (jsonresponse.success) {
                    msg = jsonresponse.content;  
                    displayMessage(msg);   
                    clearMessageOnPage();         
                }
            } 
            break;
        case 2:
            var msg = {};
            var jsonresponse = null;              
            jsonresponse = JSON.parse(xmlresponse);                 
            if (jsonresponse !== null) {
                if (jsonresponse.success) {
                    msg = jsonresponse.content;  
                    displayMessagesAtBottom(msg);            
                }
            } 
            break;
        case 3:
            //execute code block 2
            break;
        default:
    }
}

function displayMessage(msg) {
    var msgId = msg.Id;
    var memberId = msg.MemberId;
    var userName = msg.UserName;
    var isUserNameHidden = msg.IsUserNameHidden;
    var message = msg.Message;
    var addedTime = msg.AddedTime;
    var parent = document.getElementById("messagesDiv");
    var prevId;
    for (i=0; i<parent.childNodes.length; i++){
        if(parent.childNodes[i].nodeName == "DIV") {
            prevId = parent.childNodes[i].id;
            break;
        }
    }
    var newmessage = document.createElement("div");
    var oldmessage = document.getElementById(prevId);
    newmessage.setAttribute("id", "msg" + msgId);
    var userNameDisplay;
    if (memberId == 0) {
        userNameDisplay = userName;
    } else {
        userNameDisplay = "<a href=\"/" + memberId + "\">" + userName + "</a>";
    }
    if (!isUserNameHidden) {
        newmessage.innerHTML = "<b>" + userNameDisplay + "</b> said" + "<br />"
    }
    newmessage.innerHTML += message + "<br />" +
                            "<div class=\"tm\">" + 
                            addedTime + "</div>" + "<br />";
    parent.insertBefore(newmessage, oldmessage);
}

function displayMessagesAtBottom(msgs) {
    for (i=0;i<msgs.length;i++) {
        var msg = msgs[i];
        var msgId = msg.Id;
        var memberId = msg.MemberId;
        var userName = msg.UserName;
        var isUserNameHidden = msg.IsUserNameHidden;
        var message = msg.Message;
        var addedTime = msg.AddedTime;
        var parent = document.getElementById("messagesDiv");
        var moreId = "moreDiv";    
        var newmessage = document.createElement("div");
        var oldmessage = document.getElementById(moreId);
        newmessage.setAttribute("id", "msg" + msgId);
        var userNameDisplay;
        if (memberId == 0) {
            userNameDisplay = userName;
        } else {
            userNameDisplay = "<a href=\"/" + memberId + "\">" + userName + "</a>";
        }
        if (!isUserNameHidden) {
            newmessage.innerHTML = "<b>" + userNameDisplay + "</b> said" + "<br />"
        }
        newmessage.innerHTML += message + "<br />" +
                                "<div class=\"tm\">" + 
                                addedTime + "</div>" + "<br />";
        parent.insertBefore(newmessage, oldmessage);
    }
}

function clearMessageOnPage() {
    var oMessage;
    oMessage = document.getElementById("ctl00_CphBody_" + "txtMessage");
    if (oMessage) { oMessage.value = ""; }  
    oMessage = document.getElementById("ctl00_CphDefaultWebSpace_DefaultWebSpace1_" + "txtMessage");
    if (oMessage) { oMessage.value = ""; }      
}

// prefix is the control prefix
// isUserNameHidden is to hide user name when returns back
function postMessage(prefix, isUserNameHidden) {
    var maxLenUserName = 50;
    var maxLenMessage = 300;
    var oUserName = document.getElementById(prefix + "txtUserName");
    var oMessage = document.getElementById(prefix + "txtMessage");
    var userName;
    if (oUserName) {
        userName = oUserName.value;
    } else {
        userName = "";
    }
    var message = oMessage.value;
    userName = userName.replace(/(<([^>]+)>)/ig, ""); 
    message = message.replace(/(<([^>]+)>)/ig, ""); 
    userNameAlert = document.getElementById("lblUserNameAlert");
    messageAlert = document.getElementById("lblMessageAlert");    
    if (userName.length > maxLenUserName) {
        userNameAlert.innerHTML = "<span class=\"msg\">too many characters.</span>";
    } else if (message.length > maxLenMessage) {
        messageAlert.innerHTML = "<span class=\"msg\">too many characters.</span>";
    } else if (oUserName && (userName == "")) {
        userNameAlert.innerHTML = "<span class=\"msg\">enter your name here.</span>";
    } else if (message !== "") {
        if (userNameAlert) { userNameAlert.innerHTML = ""; }
        messageAlert.innerHTML = "";
        var url = "PostMessageHandler.ashx";
        var paras;
        if (oUserName) {
            paras = "UserName=" + escape(userName) + "&Message=" + escape(message);
        } else {
            paras = "Message=" + escape(message);
        }
        paras += "&IsUserNameHidden=" + isUserNameHidden;
        getAjaxResponse(url, paras, 1);
    }
}

// memberId defaults to 0
// isUserNameHidden is to hide user name when returns back
function getMoreMessages(memberId, isUserNameHidden) {
    var parent = document.getElementById("messagesDiv");
    var lastId;
    for (i=parent.childNodes.length-1; i>=0; i--){
        if(parent.childNodes[i].nodeName == "DIV" && 
                parent.childNodes[i].id.indexOf("msg") == 0) {
            lastId = parent.childNodes[i].id;
            break;
        }
    }    
    lastMsgId = lastId.substring(3, lastId.length);
    var url = "GetMoreMessagesHandler.ashx";
    var paras = "PreviousId=" + escape(lastMsgId);
    if (memberId != 0) { paras += "&MemberId=" + escape(memberId) };
    paras += "&IsUserNameHidden=" + isUserNameHidden;
    getAjaxResponse(url, paras, 2);
}

// Counter
function counter(prefix) {
    var oMessage = document.getElementById(prefix + "txtMessage");
    myMessage = oMessage.value;
    myCharsCounter = myMessage.length;
    var oCounter = document.getElementById("lblCharCounter")
    // Set a maximum length such as 350 characters
    myCharsLeft = 350 - myCharsCounter;
    oCounter.innerHTML = myCharsLeft;
    if (myCharsLeft > 50) {
        oCounter.style.color = "Gray";
    } else if (myCharsLeft > 10) {
        oCounter.style.color = "Black";
    } else {
        oCounter.style.color = "Red";
    }
}

