// Rev. 09/07/2003
// Expand all and Collapse all now toggle

function TreeToggleMenu(item) {
    obj=document.getElementById(item);
    visible=(obj.style.display!="none")
    key=document.getElementById("x" + item);
    if (visible) {
        obj.style.display="none";
        key.innerHTML="<img src='/i/gen/expand.gif' width='9' height='9' hspace='0' vspace='0' border='0' alt='Expand'>";
    } else {
        obj.style.display="";
        key.innerHTML="<img src='/i/gen/collapse.gif' width='9' height='9' hspace='0' vspace='0' border='0' alt='Collapse'>";
    }
    SaveMenuState();
}

function ExpandMenu(item) {
    obj=document.getElementById(item);
    if((typeof obj!="undefined")&(obj!=null)) {
        key=document.getElementById("x" + item);
        obj.style.display="";
        key.innerHTML="<img src='/i/gen/collapse.gif' width='9' height='9' hspace='0' vspace='0' border='0' alt='Collapse'>";
        SaveMenuState();
    }
}

function Expand() {
    obj=document.getElementById("menu");
    if (typeof obj!="undefined") {
        tbodys=obj.getElementsByTagName("tbody");
        for (i=0;i<tbodys.length;i++) {
            if(tbodys[i].id!=1) { //skip "implied" tbody elements with no id
                tbodys[i].style.display="";
                key=document.getElementById("x" + tbodys[i].id);
                if(key) {
                    key.innerHTML="<img src='/i/gen/collapse.gif' width='9' height='9' hspace='0' vspace='0' border='0' alt='Collapse'>";
                }
            }            
        }
        SaveMenuState();
    }        
}

function Collapse() {
    obj=document.getElementById("menu");
    if (typeof obj!="undefined") {
        tbodys=obj.getElementsByTagName("tbody");
        for (i=0;i<tbodys.length;i++) {
            if (tbodys[i].id!='') //skip "implied" tbody elements with no id
                {
                tbodys[i].style.display="none";
                key=document.getElementById("x" + tbodys[i].id);
                if(key) {
                    key.innerHTML="<img src='/i/gen/expand.gif' width='9' height='9' hspace='0' vspace='0' border='0' alt='Expand'>";
                }
            }            
        }
        SaveMenuState();
    }        
}

function SaveMenuState() {
    var menustate = '';
    var expandable = false;
    var collapsible = false;
    obj=document.getElementById("menu");
    if ((typeof obj!= "undefined")&(obj!=null)) {
        tbodys=obj.getElementsByTagName("tbody");
        for (i=0;i<tbodys.length;i++) {
            if(tbodys[i].id!='') { //skip "implied" tbody elements with no id
                if(tbodys[i].style.display=="none") {
                    expandable=true;
                    menustate = menustate + '0';
                }
                else {
                    menustate = menustate + '1';
                    collapsible=true;
                    }
                }
            }
        document.cookie = "menustate=" + escape(menustate) +"; path=/";
        // alert('saved menustate='+menustate);
        CollapseExpand(expandable, collapsible);
    }        
}

function GetCookie(name) {
    // function from Javascript Unleashed 3rd Edn. (pub SAMS), p. 813
    var result = null;
    var myCookie = " " +  document.cookie + ";";
    var searchName = " " + name + "=";
    var startOfCookie = myCookie.indexOf(searchName);
    var endOfCookie;
    if (startOfCookie != -1) {
        startOfCookie += searchName.length ; //skip past cookie name
        endOfCookie = myCookie.indexOf(";",startOfCookie);
        result = unescape(myCookie.substring(startOfCookie, endOfCookie));
        }
    return result;
    }

function LoadMenuState(menuexpanded) {
    
    var menustate = GetCookie("menustate");
    var expandable = false;
    var collapsible = false;
    var cookievalue;
    var key;
    var j = 0;
    // alert('loaded menustate='+menustate);
    obj=document.getElementById("menu");
    if ((typeof obj!="undefined")&(obj!=null)) {
        tbodys=obj.getElementsByTagName("tbody");
        if ((typeof tbodys!="undefined")&(tbodys!=null)) {
            for (i=0;i<tbodys.length;i++) {
                if (tbodys[i].id!='') { //skip "implied" tbody elements with no id
                    if(menuexpanded == tbodys[i].id)   {
                        // menuexpanded overrides cookie
                        tbodys[i].style.display=""
                        }
                    else {
                        if (menustate==null) {
                            tbodys[i].style.display="none"
                        }
                        else {
                            if(menustate.substr(j,1)=='1') {
                                tbodys[i].style.display=""
                                if (document.getElementById("x" + tbodys[i].id)) {
                                    document.getElementById("x" + tbodys[i].id).innerHTML="<img src='/i/gen/collapse.gif' width='9' height='9' hspace='0' vspace='0' border='0' alt='Collapse'>";
                                    }
                            } else {
                                tbodys[i].style.display="none"
                            }
                        }
                    }
                    if(tbodys[i].style.display=="none") {
                        expandable=true;
                    } else {
                        collapsible=true;
                    }
                    j = j + 1;
                }
            }
            CollapseExpand(expandable, collapsible);
        }           
    }        
}

function CollapseExpand(expandable, collapsible) {
    if(expandable) {
        document.getElementById("expand").style.display="";
    } else {
        document.getElementById("expand").style.display="none";
    }
    if (collapsible) {
        document.getElementById("collapse").style.display=""; 
    } else {
        document.getElementById("collapse").style.display="none";
    }
}

function Goto(URL,menu) {
    ExpandMenu(menu);
    window.location = URL
}