var IsIE = navigator.appName.indexOf("Microsoft") != -1;

var allItemsState = false;
var fromSelectAll = false;
function MyLawToggleSelectAll(mainTable, backGroundColor) 
{
    var Node = document.getElementById(mainTable);
    var arr = Node.getElementsByTagName("input");
    allItemsState = allItemsState ? false : true;
    if (allItemsState) 
    {
        for (var i = 0; i < arr.length; i++) {
            if ((arr[i].disabled == false) && (arr[i].checked == false)) 
            {
                arr[i].checked = true;
                fromSelectAll = true;
                MyLawSelectItem(mainTable, arr[i], backGroundColor);
            }
        }
    }
    else 
    {
        for (var i = 0; i < arr.length; i++) 
        {
            if ((arr[i].disabled == false) && (arr[i].checked == true)) 
            {
                arr[i].checked = false;
                fromSelectAll = true;
                MyLawSelectItem(mainTable, arr[i], backGroundColor);
            }
        }
    }
}


function MyLawSelectItem(mainTable, x, backGroundColor) 
{
    var Node = MyLawGetParent(x);
    while (null != Node && Node.nodeName != "TR") { Node = Node.parentNode; }

    if (x.checked) 
    {
        Node.setAttribute("previousBackgroundColor", Node.style.backgroundColor);
        Node.style.backgroundColor = backGroundColor;
    }
    else 
    {
        if (null != Node.getAttribute("previousBackgroundColor")) 
        {
            Node.style.backgroundColor = Node.getAttribute("previousBackgroundColor");
        }
        else 
        {
            Node.style.backgroundColor = "white";
        }
    }

    //Uncheck the Select All checkbox if one of the child checkboxes was unchecked
    if (x.checked == false) {
        var td = document.getElementById("tdselectall");
        var elems = td.getElementsByTagName("input");
        var len = elems.length;

        for (var i = 0; i < len; i++) {
            if (elems[i].type == "checkbox")
                if (elems[i].checked == true) {
                    elems[i].checked = false;
                    allItemsState = allItemsState ? false : true;
                }

            break;
        }
    }
    else if (fromSelectAll == false) 
    {
        var mainTable = document.getElementById(mainTable);
        var arr = mainTable.getElementsByTagName("input");
        var allchecked = true;
        for (var i = 1; i < arr.length; i++) //Skip first checkbox because it is the select all checkbox
        {
            if ((arr[i].disabled == false) && (arr[i].checked == false)) 
            {
                allchecked = false;
                break;
            }
        }

        if (allchecked) 
        {
            var td = document.getElementById("tdselectall");
            var elems = td.getElementsByTagName("input");
            var len = elems.length;

            for (var i = 0; i < len; i++) 
            {
                if (elems[i].type == "checkbox")
                    if (elems[i].checked == false) 
                    {
                        elems[i].checked = true;
                        allItemsState = allItemsState ? false : true;
                    }

                break;
            }
        }
    }

    fromSelectAll = false;
}

function MyLawGetParent(id) 
{
    var elem;
    if (MyLawStr(id)) elem = $(id);
    else elem = id;
    if (MyLawDef(elem)) 
    {
        var parent = ((IsIE) ? elem.parentElement : elem.parentNode);
        return parent;
    }
    return null;
}

function MyLawDef() {
    for (var i = 0; i < arguments.length; ++i) { if (null == arguments[i] || typeof (arguments[i]) == 'undefined') return false; }
    return true;
}
function MyLawStr(s) {
    for (var i = 0; i < arguments.length; ++i) { if (typeof (arguments[i]) != 'string') return false; }
    return true;
}

var alt1 = 'Collapse';
var alt2 = 'Expand';

function APSExpGroupBy(formObj) 
{
    if ((browseris.w3c) && (!browseris.ie)) {
        document.all = document.getElementsByTagName("*");
    }
    docElts = document.all;
    numElts = docElts.length;
    images = formObj.getElementsByTagName("IMG");
    img = images[0];
    srcPath = img.src;
    index = srcPath.lastIndexOf("/");
    imgName = srcPath.slice(index + 1);
    if (imgName == 'plus.gif') {
        fOpen = true;
        displayStr = "";
        img.src = '/_layouts/images/minus.gif';
    }
    else {
        fOpen = false;
        displayStr = "none";
        img.src = '/_layouts/images/plus.gif';
    }

    if (img.alt == alt1) 
    {
        img.alt = alt2;
        img.title = alt2;
    }
    else 
    {
        img.alt = alt1;
        img.title = alt1;
    }

    spanNode = img;
    while (spanNode != null) {
        spanNode = spanNode.parentNode;
        if (spanNode != null &&
              spanNode.id != null &&
              spanNode.id.length > 5 &&
              spanNode.id.substr(0, 5) == "group")
            break;
    }
    parentNode = spanNode;
    while (parentNode != null) {
        parentNode = parentNode.parentNode;
        if (parentNode != null &&
              parentNode.tagName == "TABLE")
            break;
    }
    lastNode = null;
    if (parentNode != null) {
        lastNode = parentNode.lastChild;
        if (lastNode != null && lastNode.tagName == "TBODY")
            lastNode = lastNode.lastChild;
        if (lastNode != null && lastNode.tagName == "TR" && lastNode.lastChild != null)
            lastNode = lastNode.lastChild;

        if (navigator.appName != "Microsoft Internet Explorer") {
            while ((lastNode !== null) && (lastNode.tagName != "TR"))
                lastNode = lastNode.previousSibling;
        }
    }
    for (var i = 0; i < numElts; i++) {
        var childObj = docElts[i];
        if (childObj == spanNode)
            break;
    }
    ID = spanNode.id.slice(5);
    for (var j = i + 1; j < numElts; j++) {
        var childObj = docElts[j];
        if (childObj.id.length > 5 &&
              childObj.id.substr(0, 5) == "group") {
            curID = childObj.id.slice(5);
            if (curID <= ID)
                return;
        }
        parentNode = childObj;
        while (parentNode != null) {
            parentNode = parentNode.parentNode;
            if (parentNode == spanNode)
                break;
        }
        if (parentNode == spanNode)
            continue;
        if (childObj != img &&
              childObj.tagName == "IMG" &&
              childObj.src &&
              childObj.src.slice(childObj.src.length - 25) == '/_layouts/images/plus.gif') {
            childObj.src = '/_layouts/images/minus.gif';
            oldName = childObj.name;
            childObj.name = childObj.alt;
            childObj.alt = oldName;
        }
        if (childObj.tagName == spanNode.tagName &&
              childObj.id != "footer") {
            childObj.style.display = displayStr;
        }
        if ((childObj.tagName == "TABLE" && lastNode == null) || childObj == lastNode)
            break;
    }
}
