function toggle(tableId, expandImage, collapseImage)
{
    var PRV_TABLE_ID = "prvTableId";
    var PRV_DIV_ID = "prvDivId";
    var img = document.getElementById(tableId.replace("node", "leaf").replace("leaf", "img"));
    var src = img.src;
    var prvDivId = getCookie(PRV_DIV_ID);
    var divId = tableId.replace("node", "subMenu");
    var div;
    
    if (prvDivId == null || prvDivId == "null")
    {
        div = document.getElementById(divId);
        div.style.display = "";
        src = src.replace(expandImage, collapseImage);
        setCookie(PRV_TABLE_ID, tableId);
        setCookie(PRV_DIV_ID, divId);
    }
    else if (prvDivId == divId)
    {
        div = document.getElementById(divId);
        div.style.display = "none";
        src = src.replace(collapseImage, expandImage);
        setCookie(PRV_TABLE_ID, "null");
        setCookie(PRV_DIV_ID, "null");
    }
    else if (prvDivId != divId)
    {
        div = document.getElementById(prvDivId);
        if (div != null)
            div.style.display = "none";
        var prvImg = document.getElementById(getCookie(PRV_TABLE_ID).replace("node", "leaf").replace("leaf", "img"));
        if (prvImg != null)
            prvImg.src = prvImg.src.replace(collapseImage, expandImage);
        
        div = document.getElementById(divId);
        div.style.display = "";
        src = src.replace(expandImage, collapseImage);
        setCookie(PRV_TABLE_ID, tableId);
        setCookie(PRV_DIV_ID, divId);
    }
       
    img.src = src;
    reset_submenu(tableId, expandImage, collapseImage);
}
function reset_submenu(tableId, expandImage, collapseImage)
{
    var menuId = get_id(tableId);
    var menuLevel = get_level(tableId);
    var uls = document.getElementsByTagName("ul");
    for (var i = 0; i < uls.length; i++)
    {
        var ul = uls.item(i);
        if (ul.id.indexOf("Ephibian") >= 0 && menuId == get_id(ul.id))
        {
           var level = get_level(ul.id);
           if (level == parseInt(menuLevel) + 1)
           {
            ul.style.display = "";
           }
           else if (level >= parseInt(menuLevel) + 2)
            ul.style.display = "none";
        }
    }
    
    reset_submenu_icons(menuId, menuLevel, expandImage, collapseImage);
}
function reset_submenu_icons(menuId, menuLevel, expandImage, collapseImage)
{
    var imgs = document.getElementsByTagName("img");
    for (var i = 0; i < imgs.length; i++)
    {
        var img = imgs.item(i);
        if (img.id.indexOf("Ephibian") >= 0 && menuId == get_id(img.id))
        {
           var level = get_level(img.id);
           if (level >= parseInt(menuLevel) + 1)
            img.src = img.src.replace(collapseImage, expandImage);
        }
    }
}
function get_id(id)
{
    var tokens = id.split("_");
    if (tokens.length == 7)
        return tokens[1];
    
    return "";    
}
function get_level(ulId)
{
    var tokens = ulId.split("_");
    if (tokens.length == 7)
        return tokens[5];
        
    return -1;
}
function do_onmouseover(tableId, hoverClass)
{
    var table = document.getElementById(tableId);
    table.className = hoverClass;
}
function do_onmouseout(tableId, tableClass)
{
    var table = document.getElementById(tableId);
    table.className = tableClass;
}
function getCookie(c_name)
{
    var c_start, c_end;
    
    if (document.cookie.length > 0)
    {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1)
        { 
            c_start = c_start + c_name.length + 1; 
            c_end = document.cookie.indexOf(";",c_start);
            if (c_end == -1)
                c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        } 
    }
    return null;
}
// Save for 30 days.
function setCookie(c_name,value/*,expiredays*/)
{
    var exdate = new Date();
    expiredays = 30;
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString() + "; path=/");
}
