﻿function InboxDD_OnSelectedChanged(sender, bInbox)
{
    var InboxDD = $get("InboxDD");
    var selectedValue = sender.value;
    var className;
    
    if (document.forms[0].inboxCheckBox)
    {
        if (document.forms[0].inboxCheckBox.length > 0)
        {
            for (var i = 0; i < document.forms[0].inboxCheckBox.length; i++)
            {
                switch(selectedValue)
                {
                    case "None":
                        document.forms[0].inboxCheckBox[i].checked = false;
                        break;
                    case "Read":
                        if (document.forms[0].inboxCheckBox[i].parentElement)
                            className = document.forms[0].inboxCheckBox[i].parentElement.parentElement.className;
                        else if (document.forms[0].inboxCheckBox[i].parentNode)
                            className = document.forms[0].inboxCheckBox[i].parentNode.parentNode.className;
                            
                        if (className == "Read item" || className == "Read item alt")
                            document.forms[0].inboxCheckBox[i].checked = true;
                        else
                            document.forms[0].inboxCheckBox[i].checked = false;
                        break;
                    case "Unread":
                        if (document.forms[0].inboxCheckBox[i].parentElement)
                            className = document.forms[0].inboxCheckBox[i].parentElement.parentElement.className;
                        else if (document.forms[0].inboxCheckBox[i].parentNode)
                            className = document.forms[0].inboxCheckBox[i].parentNode.parentNode.className;
                            
                        if (className == "Unread item" || className == "Unread item alt")
                            document.forms[0].inboxCheckBox[i].checked = true;
                        else
                            document.forms[0].inboxCheckBox[i].checked = false;
                        break;
                    case "All":
                        document.forms[0].inboxCheckBox[i].checked = true;
                        break;
                    default:
                        break;
                }
            }
        }
        else
        {
            switch(selectedValue)
            {
                case "None":
                    document.forms[0].inboxCheckBox.checked = false;
                    break;
                case "Read":
                    if (document.forms[0].inboxCheckBox.parentElement)
                        className = document.forms[0].inboxCheckBox.parentElement.parentElement.className;
                    else if (document.forms[0].inboxCheckBox.parentNode)
                        className = document.forms[0].inboxCheckBox.parentNode.parentNode.className;
                        
                    if (className == "Read item" || className == "Read item alt")
                        document.forms[0].inboxCheckBox.checked = true;
                    else
                        document.forms[0].inboxCheckBox.checked = false;
                    break;
                case "Unread":
                    if (document.forms[0].inboxCheckBox.parentElement)
                        className = document.forms[0].inboxCheckBox.parentElement.parentElement.className;
                    else if (document.forms[0].inboxCheckBox.parentNode)
                        className = document.forms[0].inboxCheckBox.parentNode.parentNode.className;
                        
                    if (className == "Unread item" || className == "Unread item alt")
                        document.forms[0].inboxCheckBox.checked = true;
                    else
                        document.forms[0].inboxCheckBox.checked = false;
                    break;
                case "All":
                    document.forms[0].inboxCheckBox.checked = true;
                    break;
                default:
                    break;
            }
        }
    }
    
    CheckCheckBoxes(bInbox);
   
}

function CheckCheckBoxes(bInbox)
{
    var className = "";
    var readCount = 0;
    var unReadCount = 0;
    
    if (document.forms[0].inboxCheckBox)
    {
        if (document.forms[0].inboxCheckBox.length > 0)
        {
            for (var i = 0; i < document.forms[0].inboxCheckBox.length; i++)
            {
                if (document.forms[0].inboxCheckBox[i].checked == true)
                {
                    if (document.forms[0].inboxCheckBox[i].parentElement)
                        className = document.forms[0].inboxCheckBox[i].parentElement.parentElement.className;
                    else if (document.forms[0].inboxCheckBox[i].parentNode)
                        className = document.forms[0].inboxCheckBox[i].parentNode.parentNode.className;
                
                    if (className == "Unread item" || className == "Unread item alt")
                        unReadCount++;
                    else if (className == "Read item" || className == "Read item alt")
                        readCount++;
                }
            }
        }
        else
        {
            if (document.forms[0].inboxCheckBox.checked == true)
            {
                if (document.forms[0].inboxCheckBox.parentElement)
                    className = document.forms[0].inboxCheckBox.parentElement.parentElement.className;
                else if (document.forms[0].inboxCheckBox.parentNode)
                    className = document.forms[0].inboxCheckBox.parentNode.parentNode.className;
            
                if (className == "Unread item" || className == "Unread item alt")
                    unReadCount++;
                else if (className == "Read item" || className == "Read item alt")
                    readCount++;
            }
        }
    }
            
    if (readCount == 0 && unReadCount == 0)
        ManageMenu("None", bInbox);
    else if (readCount > 0 && unReadCount == 0)
        ManageMenu("Read", bInbox);
    else if (unReadCount > 0 && readCount == 0)
        ManageMenu("Unread", bInbox);
    else if (readCount > 0 && unReadCount > 0)
        ManageMenu("All", bInbox);
}

function ManageMenu(selectedValue, bInbox)
{
    if (bInbox)
    {
        $get("inboxMarkAsUnread").innerHTML = "Mark as Unread";
        $get("inboxMarkAsRead").innerHTML = "Mark as Read";
        var sMarkAsUnread = "<a id=\"menuUnreadLink\" href=\"javascript:;\" onclick=\"ProcessInboxMessages('unread');\">Mark as Unread</a>";
        var sMarkAsRead = "<a id=\"menuReadLink\" href=\"javascript:;\" onclick=\"ProcessInboxMessages('read');\">Mark as Read</a>";
    }
 
    switch(selectedValue)
    {
        case "None":
            if (bInbox)
            {
                $get("inboxMarkAsUnread").innerHTML = "Mark as Unread";
                $get("inboxMarkAsRead").innerHTML = "Mark as Read";
            }
            DestroyPopupAnchor();
            break;
        case "Read":
            if (bInbox)
                $get("inboxMarkAsUnread").innerHTML = sMarkAsUnread;
            CreatePopup(bInbox);
            break;
        case "Unread":
            if (bInbox)
                $get("inboxMarkAsRead").innerHTML = sMarkAsRead;
            CreatePopup(bInbox);
            break;
        case "All":
            if (bInbox)
            {
                $get("inboxMarkAsUnread").innerHTML = sMarkAsUnread;
                $get("inboxMarkAsRead").innerHTML = sMarkAsRead;
            }
            CreatePopup(bInbox);
            break;
        default:
            break;
    }
}

function CreatePopup(bInbox)
{
    var divObj = $get("menuDeleteLink");

    if(!divObj)
    {
        $get("inboxDelete").innerHTML = "";
        var deleteAnchor = document.createElement("a");
        deleteAnchor.href = "javascript:;";
        deleteAnchor.id = "menuDeleteLink";
        deleteAnchor.innerHTML = "Delete";
        $get("inboxDelete").appendChild(deleteAnchor);
        Sys.Application.add_init(function() { $create(Kingpin.TemplatePopupExtender, { "id": "menuDelMsgPopup", "template": "DeleteFromInboxMenu", "Position": Kingpin.PopupHorizontalPosition.LeftOutside, "contextKey": bInbox + '' }, null, null, $get('menuDeleteLink')); });
    }
}

function DestroyPopupAnchor()
{
    var popupDivObj = $get("menuDelMsgPopup_PopupPanel");
    
    if (popupDivObj)
    {
        var findObj = $find("menuDelMsgPopup");
        Sys.Application.removeComponent(findObj);
        var findObjBehavior = $find("menuDelMsgPopupPopupBehavior");
        Sys.Application.removeComponent(findObjBehavior);
        document.body.removeChild(popupDivObj);
    }
    $get("inboxDelete").innerHTML = "Delete";
}

function ProcessInboxMessages(action, bInbox, pageNum, sort, asc)
{
    var changeSet = new Array();
    if (document.forms[0].inboxCheckBox)
    {
        if (document.forms[0].inboxCheckBox.length > 0)
        {
            for (var i = 0; i < document.forms[0].inboxCheckBox.length; i++)
            {
                if (document.forms[0].inboxCheckBox[i].checked == true)
                    changeSet.push(document.forms[0].inboxCheckBox[i].value);
            }
        }
        else
        {
            if (document.forms[0].inboxCheckBox.checked == true)
                changeSet.push(document.forms[0].inboxCheckBox.value);
        }
    }

    switch(action)
    {
        case "unread":
            Kingpin.Services.Inbox.Inbox.MarkAsUnread(changeSet, SucceededMarkAsUnreadCallback);
            break;
        case "read":
            Kingpin.Services.Inbox.Inbox.MarkAsRead(changeSet, SucceededMarkAsReadCallback);
            break;
        case "delete":
            Kingpin.Services.Inbox.Inbox.Delete(changeSet, bInbox, pageNum, sort, asc, SucceededDeletedCallback, FailedCallback, changeSet);
            break;
        default:
            break;
    }
}

function SucceededMarkAsUnreadCallback(result, eventArgs)
{        
    var ids = [];
    ids = result;
    var numChanged = 0;
    
    for (var i = 0; i < ids.length; i++)
    {
        var sDivName = "inboxMsg" + ids[i];
        var divName = $get(sDivName);
        if (divName.className != "Unread item" && divName.className != "Unread item alt")
        {
            if (divName.className == "Read item")
                divName.className = "Unread item";
            else if (divName.className == "Read item alt")
                divName.className = "Unread item alt";
            numChanged++;
        }
    }
    CheckForUnreadPendingMessages("unread", numChanged);
    CheckCheckBoxes(true);
}

function SucceededMarkAsReadCallback(result, eventArgs)
{        
    var ids = [];
    ids = result;
    var numChanged = 0;
    
    for (var i = 0; i < ids.length; i++)
    {
        var sDivName = "inboxMsg" + ids[i];
        var divName = $get(sDivName);
        if (divName.className != "Read item" && divName.className != "Read item alt")
        {
            if (divName.className == "Unread item")
                divName.className = "Read item";
            else if (divName.className == "Unread item alt")
                divName.className = "Read item alt";
            numChanged++;
        }
    }
    CheckForUnreadPendingMessages("read", numChanged);
    CheckCheckBoxes(true);
}

function SucceededDeletedCallback(result, userContext)
{        
    var numUnread = 0;
    var ids = [];
    ids = userContext;
    var popupDivObj = $get("menuDelMsgPopup_PopupPanel");
    
    if (popupDivObj)
    {
        while (popupDivObj.firstChild)
        {
            popupDivObj.removeChild(popupDivObj.firstChild);
        }
        popupDivObj.style.display = "none";
    }
    
    for (var j = 0; j < result.length; j++)
    {
        CreateInboxElement(result[j]);
    }
    
    for (var i = 0; i < ids.length; i++)
    {
        var sDivName = "inboxMsg" + ids[i];
        var divName = $get(sDivName);
        
        if (divName.className == "Unread item" || divName.className == "Unread item alt")
            numUnread++;
        
        RemoveInboxMsg(divName);
    }
    
    $get("InboxDD").selectedIndex = 0;
    
    SetInboxClasses();
    SetMessagesAndPaging(ids.length);
    
    var qsKV = new Array();
    var query = document.location.search;
    query = query.replace("?", "");
    var qs = query.split("&");
    
    for (var i = 0; i < qs.length; i++)
    {
        var pos = qs[i].indexOf("=");
        if (pos > 0)
        {
            var key = qs[i].substring(0, pos);
            var val = qs[i].substring(pos + 1);
            qsKV[key] = val;
        }
    }
    
    var bInbox;
    
    if (qsKV["m"] == "sm")
        bInbox = false;
    else
        bInbox = true;
    
    CheckForUnreadPendingMessages("delete", numUnread);
    CheckCheckBoxes(bInbox);
}

function GetPreviousSibling(node)
{
    if (node == null)
        return null;
    else
    {
        var tempNode = node.previousSibling;
        
        while (tempNode && tempNode.nodeType != 1)
        {
            tempNode = tempNode.previousSibling;
        }
        return tempNode;
    }
}

function GetNextSibling(node)
{
    if (node == null)
        return null;
    else
    {
        var tempNode = node.nextSibling;
        
        while (tempNode && tempNode.nodeType != 1)
        {
            tempNode = tempNode.nextSibling;
        }
        return tempNode;
    }
}

function GetFirstChild(node)
{
    if (node == null)
        return null;
    else
    {
        var tempNode = node.firstChild;
        
        while (tempNode && tempNode.nodeType != 1)
        {
            tempNode = tempNode.nextSibling;
        }
        return tempNode;
    }
}