function initializeCategoryMenu(category)
{
    // TODO
    var plusBig = '/images/plus_big.png';
    var minusBig = '/images/minus_big.png';

    var plusBig = '/images/plus_big.png';
    var minusBig = '/images/minus_big.png';

    var cookieName = "allSubCats";
    var keyName = "cat" + category + "All";
    var savedExpandStateHash = getCookieValue(cookieName, true);
    if (savedExpandStateHash)
    {
        var savedExpandStateForCategory = getValueFromHashString(keyName, savedExpandStateHash, false, true);

        if (savedExpandStateForCategory)
        {
            var newSrc = (savedExpandStateForCategory == 'expanded') ? minusBig : plusBig;
            var newDisplay = (savedExpandStateForCategory == 'expanded') ? 'block' : 'none';

            var catImg = document.getElementById('catImg');
            if (catImg)
            {
                catImg.src = newSrc;
                catImg.title = ((savedExpandStateForCategory == 'expanded') ? "Collapse All Subcategories" : "Expand All Subcategories");
            }
          
            var catImgA = document.getElementById('catImgA');
            if (catImgA)
            {
              catImgA.title = ((savedExpandStateForCategory == 'expanded') ? "Collapse All Subcategories" : "Expand All Subcategories");
            }
        }
        else
        {
          // expansion state couldn't be found for the category - probably because the user has never been here
          // and saved the state.  we're assuming that the initial state is all expanded, so output a "collapse" message
          var catImg = document.getElementById('catImg');
          if (catImg)
          {
            catImg.title = "Collapse All Subcategories";
          }

          var catImgA = document.getElementById('catImgA');
          if (catImgA)
          {
            catImgA.title = "Collapse All Subcategories";
          }
        }
    }
    else
    {
        // no expansion states could be found at all - again, probably because nothing exists in the cookie
        // we're assuming that the initial state is all expanded, so output a "collapse" message
        var catImg = document.getElementById('catImg');
        if (catImg)
        {
            catImg.title = "Collapse All Subcategories";
        }

        var catImgA = document.getElementById('catImgA');
        if (catImgA)
        {
          catImgA.title = "Collapse All Subcategories";
        }
    }  
}

function initializeSubcategoryMenu(category)
{
    var minus = '/images/minus.png';
    var plus = '/images/plus.png';

    var cookieName = "collapsedStates";
    var keyName = "cat" + category + "collapse";
    var savedCollapseStatesHash = getCookieValue(cookieName, true);
    if (savedCollapseStatesHash)
    {
        var savedCollapseStatesForCategory = getValueFromHashString(keyName, savedCollapseStatesHash, false, true);

        if (savedCollapseStatesForCategory)
        {
            var savedCollapseStatesArray = savedCollapseStatesForCategory.split(',');
            for (var i=0; i < savedCollapseStatesArray.length; i++)
            {
                var div = document.getElementById('subCatNav_' + savedCollapseStatesArray[i]);
                var img = document.getElementById('subCatImg_' + savedCollapseStatesArray[i]);

                if (div)
                {
                    div.style.display = 'none';
                    img.src = plus;
                }
            }
        }
    }
}

function saveCategoryMenuState(category)
{
    var keyName = "cat" + category + "All";
    var plusBig = '/images/plus_big.png';
    var expandAll = false;

    var catImg = document.getElementById('catImg');
    if (catImg)
    {
        expandAll = (catImg.src.indexOf(plusBig) > 0);
    }

    var keyValue = (expandAll ? 'collapsed' : 'expanded');
    var cookieName = "allSubCats";
    var savedExpandStates = getCookieValue(cookieName, true);
    var savedExpandStateForCategory = (savedExpandStates ? getValueFromHashString(keyName, savedExpandStates, false, true) : "");
    var newExpandStates = updateHashStringWithKeyValuePair(keyName, keyValue, savedExpandStates, false, true);

    var catImgA = document.getElementById('catImgA');
    if (catImgA)
    {
      catImgA.title = (expandAll ? "Expand All Subcategories" : "Collapse All Subcategories");
      catImg.title = (expandAll ? "Expand All Subcategories" : "Collapse All Subcategories");
    }
    writeCookieValue(cookieName, newExpandStates, true);

}

function saveSubcategoryMenuState(category)
{
    var keyName = 'cat' + category + 'collapse';
    var stateArray = new Array();
    var subCats = document.getElementsByClassName('subCatDiv');
    var allHidden = true;
    for (var i=0; i < subCats.length; i++)
    {
        if (subCats[i].style.display != 'block')
        {
            // this node is collapsed - save it
            stateArray[stateArray.length] = i;
        }
        else
        {
            allHidden = false;
        }
    }

    var keyValue = stateArray.join(',');
    var cookieName = "collapsedStates";
    var savedCollapseStates = getCookieValue(cookieName, true)
    var newCollapseStates;
    if (savedCollapseStates)
    {
        newCollapseStates = updateHashStringWithKeyValuePair(keyName, keyValue, savedCollapseStates, false, true)
    }
    else
    {
        newCollapseStates = encodeURI(keyName + '=' + keyValue);
    }

    // finally, update the big plus or minus if we opened or closed at least one value
    var catImg = document.getElementById('catImg');
    if (catImg)
    {
        var plusBig = '/images/plus_big.png';
        var minusBig = '/images/minus_big.png';
        catImg.src = (allHidden ? plusBig : minusBig);
        saveCategoryMenuState(category);
    }

    writeCookieValue(cookieName, newCollapseStates, true);
}

function navToggle(id)
{
    var minus = '/images/minus.png';
    var plus = '/images/plus.png';

    var div = document.getElementById('subCatNav_' + id);
    var img = document.getElementById('subCatImg_' + id);

    if (div.style.display == 'none') {
        img.src = minus;
        div.style.display = 'block';
    } else {
        img.src = plus;
        div.style.display = 'none';
    }

    var category = document.getElementById('thisCategory');
    if (category)
        saveSubcategoryMenuState(category.name);
}

function expandAllSubCats(numSubCats)
{
    var minus = '/images/minus.png';
    var plus = '/images/plus.png';

    var plusBig = '/images/plus_big.png';
    var minusBig = '/images/minus_big.png';

    var catImg = document.getElementById('catImg');

    if (catImg)
    {
        // if we're clicking on a giant plus button, we want to expand everything
        var expandAll = (catImg.src.indexOf(plusBig) > 0);

        var newSrc = expandAll ? minus : plus;
        var newDisplay = expandAll ? 'block' : 'none';
        catImg.src = expandAll ? minusBig : plusBig;

        for (var i = 0; i < numSubCats;i++) {

          var div = document.getElementById('subCatNav_' + i);
          var img = document.getElementById('subCatImg_' + i);

          img.src = newSrc;
          div.style.display = newDisplay;

        } //for
    }
    
    var category = document.getElementById('thisCategory');
    if (category)
    {
        saveSubcategoryMenuState(category.name);
        saveCategoryMenuState(category.name);
    }
}

function ChangeState(newState, catID, indID)
{
    var newurl = "";

    if (catID == 0 && indID == 0)
    {
        newurl = "profileglance.jsp";
    }
    else if (catID != 0 && indID == 0)
    {
        newurl = "profilecat.jsp";
    }
    else if (indID != 0)
    {
        newurl = "profileind.jsp";
    }

    newurl += "?rgn=" + newState;

    if (catID != 0)
    {
        newurl += "&cat=" + catID;
    }

    if (indID != 0)
    {
        newurl += "&ind=" + indID;
    }

    document.location = newurl;
}

function ChangeCmpState(newState, catID, indID, subId, rgnId)
{
    var newurl = "";

    newurl = "profileind.jsp";

    newurl += "?cmprgn=" + newState;

    if (catID != 0)
    {
        newurl += "&cat=" + catID;
    }

    if (rgnId != 0)
    {
        newurl += "&rgn=" + rgnId;
    }

    if (indID != 0)
    {
        newurl += "&ind=" + indID;
    }

    if (subId != 0)
    {
        newurl += "&sub=" + subId;
    }

    document.location = newurl;
}

function ChangeCategory(query, regID)
{
    var newurl = ""

    //Hard-coded fix for CHFS
    if ((query == '/children.jsp') || (query == '/healthreform.jsp')) {
        newurl = query;
    } else {
        if (regID == 0) {
            if (query.match(/cat=/)) {
                newurl = "comparecat.jsp?" + query + "&rgn=6&rgn=1";
            } else {
                newurl = query;
            }
        } else {
            newurl = "profilecat.jsp?rgn=" + regID + "&" + query;
        }
    }

    document.location = newurl;
}

function emailForm(titleInputId, urlInputId)
{
    var title_field = document.getElementById(titleInputId);
    title_field.value = document.title;    

    var url_field = document.getElementById(urlInputId);
    url_field.value = document.URL;    
}
