//
// Top level menu item. Rollout the underlying list and close up all other
// top level menu items that may be open.
//
function toggleGroupItems(groupName, groupIndex) {
    var group = document.getElementById("groupName" + groupName);
    var groupItems = document.getElementById("groupItems" + groupName);
    var groupImg = document.getElementById("groupItemsImg" + groupName)
    var d_state = groupItems.style.display;
    //    var group_list = document.getElementsByTagName("li");
    var groupItem_list = document.getElementsByTagName("ul");
    var groupItemImg_list = document.getElementsByTagName("img");
    
    var reg2 = new RegExp(/Rollout/);
    for (var iz=0; iz<groupItemImg_list.length; iz++) {
        if (reg2.test(groupItemImg_list[iz].src)) {
            groupItemImg_list[iz].src = "images/RolloutNormal.gif";
        }
    }
    
    var reg = new RegExp(/groupItems/);
    for (var iy=0; iy<groupItem_list.length; iy++) {
        if (reg.test(groupItem_list[iy].id)) {
            groupItem_list[iy].style.display="none";
        }
    }
    
    if (d_state == "none" || d_state == "") {
        groupItems.style.display="block";
        
        if (groupImg) {
            groupImg.src="images/RolloutOpen.gif";
        }
    } 
    else {
        groupItems.style.display="none";
        
        if (groupImg) {
            groupImg.src="images/RolloutNormal.gif";
        }
    }
    
    var mode = group.parentNode.parentNode.id;
    mode = mode.replace("Types","");
}

//
// 1st Level menu item. Rollout underlying list items.
// Other menu items on the 1st level that are still open remain open until
// they are manually closed.
//
function toggleItemName(groupName, itemName) {
    var item = document.getElementById('itemName'+groupName+itemName);
    var itemNameImg = document.getElementById('itemNameImg'+groupName+itemName);
    var itemTypeList = document.getElementById('itemTypes'+groupName+itemName);
    var reg1 = new RegExp(/Normal/);
    
    if (reg1.test(itemNameImg.src)) {
        itemNameImg.src = "images/RolloutOpen.gif";
        itemTypeList.style.display="block";
    } 
    else {
        itemNameImg.src="images/RolloutNormal.gif";
        itemTypeList.style.display="none";
    }
}

//
// Mutualy exclusive selection of item name.
// This is a 1st level menu item that has no underlying menu items.
//
function selectItemName(what) {
    var cMasterList = document.getElementById("topLevel");
    var cMasterListItems = cMasterList.getElementsByTagName("li");
    for (var iy=0; iy<cMasterListItems.length; iy++) {
        refresh(cMasterListItems[iy]);
    }
    
    var aMasterList = top.analysis_frm.document.getElementById("topLevel");
    var aMasterListItems = aMasterList.getElementsByTagName("li");
    for (var ix=0; ix<aMasterListItems.length; ix++) {
        aRefresh(aMasterListItems[ix]);
    }
    
    what.className="groupItemSelected";
    what.parentNode.parentNode.className="groupNameSelected";
    
    var groupName = what.parentNode.parentNode.id.replace("groupName","");
    var mode = what.parentNode.parentNode.parentNode.parentNode.id;
    var groupItem = what.childNodes[0].nodeValue;
    groupItem=groupItem.replace(/ $/,""); // IE fix
    groupItem=groupItem.replace(/ /g,"_");
    var groupIndex = what.id
    mode = mode.replace("Types", "");
    
    top.indicator_frm.location = "IndicatorType.jsp?mode=" + mode +
    "&name=" + groupName +
    "&item=" + groupItem +
    "&groupIndex=" + groupIndex +
    "&plotMode=characteristic";
    
    top.viewOutput_frm.location = "output.jsp?plotContext=plot&group=" + what.id +
    "&mode=char" + "&name=" + groupName + "&item=" + groupItem;
    
    top.buildingInput_frm.location="UserBuilding.jsp?mode=" + mode +
    "&user_input_id=" + groupIndex + "&name=" + groupName + "&item=" + groupItem;
    resetViewTogglePane();
}

//
// Tail recursive walk of item tree.
//
function refresh(listItem) {
    var ulItem = listItem.getElementsByTagName("ul");
    var regGrp  = new RegExp(/^groupNameSelected$/);
    var regItem = new RegExp(/^groupItemSelected$/);
    var regITyp = new RegExp(/^itemTypeSelected$/);
    
    if (ulItem.length == 0) {
        //listItem.style.listStyleImage="url(images/radioButtonNormal.gif)";
        if (regItem.test(listItem.className)) {
            listItem.className = "groupItem";
        }
        if (regITyp.test(listItem.className)) {
            listItem.className = "itemType";
        }
    } else {
    if (regGrp.test(listItem.className)) {
        listItem.className = "groupName";
    }
    var listItems = ulItem[0].getElementsByTagName("li");
    for (var ix=0; ix<listItems.length; ix++) {
        refresh(listItems[ix]);
    }
}
}

function aRefresh(listItem) {
    var ulItem = listItem.getElementsByTagName("ul");
    var regGrp  = new RegExp(/^groupNameSelected$/);
    var regItem = new RegExp(/^groupItemSelected$/);
    if (ulItem.length != 0) {
        listItem.className="groupName";
        var listItems = ulItem[0].getElementsByTagName("li");
        for (var ix=0; ix<listItems.length; ix++) {
            aRefresh(listItems[ix]);
        }
    } else {
    if (regItem.test(listItem.className)) {
        listItem.className="groupItem";
    } 
    if (regGrp.test(listItem.className)) {
        listItem.className="groupName";
    }
}
}

//
// Mutualy exclusive selection of item type.
// This is a bottom level menu item. Any previous selection in sibling lists must
// be deselected as well.
//
function selectItemType(what) {
    var masterList = document.getElementById("topLevel");
    var masterListItems = masterList.getElementsByTagName("li");
    for (var iy=0; iy<masterListItems.length; iy++) {
        refresh(masterListItems[iy]);
    }
    
    var aMasterList = top.analysis_frm.document.getElementById("topLevel");
    var aMasterListItems = aMasterList.getElementsByTagName("li");
    for (var ix=0; ix<aMasterListItems.length; ix++) {
        aRefresh(aMasterListItems[ix]);
    }
    
    what.className = "itemTypeSelected";
    what.parentNode.parentNode.className = "groupItemSelected";
    
    var groupName = what.parentNode.parentNode.parentNode.parentNode.id.replace("groupName","").split(":")[0];
    var itemList = what.parentNode.parentNode.id.replace("itemName","").split(":");
    var itemName = itemList[0];
    var itemType = itemList[1].split("|")[0];
    itemType = itemType.replace("I_","");
    var itemValue = what.childNodes[0].nodeValue;
    itemValue = itemValue.replace(/ $/,"");
    itemValue = itemValue.replace(/ /g,"_");
    
    itemValue = itemValue.replace(/\u03B7/, "eta;");
    
    var mode = what.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id;
    mode = mode.replace("Types", "");
    var groupIndex = what.id;
    
    top.indicator_frm.location = "IndicatorType.jsp?mode=" + mode +
    "&name=" + itemName + "&item=" + itemType + "&groupIndex=" + groupIndex +
    "&plotMode=characteristic" + "&itemType=" + itemValue;
    
    top.viewOutput_frm.location = "output.jsp?plotContext=plot&group=" + what.id +
    "&mode=char" + "&name=" + groupName + "&item=" + itemType + "&itemType=" + itemValue;
    
    top.buildingInput_frm.location="UserBuilding.jsp?mode=" + mode +
    "&user_input_id=" + groupIndex + "&name=" + itemName + "&item=" + itemType;
    resetViewTogglePane();
}

function resetViewTogglePane() {
    top.dataExport_frm.location.reload();
}
