var slide_opened = 'images/minus.gif';
var slide_closed = 'images/plus.gif';

function set_slide_images(opened_img, closed_img)
{
    slide_opened = opened_img;
    slide_closed = closed_img;
}

/*
 * Cookie for section rollups ("slides") are stored in the following format:
 *
 * slides=account|comments|traces|...
 *
 * this is done to avoid the "20 cookies per domain" limit by storing
 * everything in one cookie
 */

/******************************************************************************
 * init_slides(id)
 *
 * initialize the state of all sections on the current page based on cookie
 * status
 *
 *****************************************************************************/
function init_slides()
{

    // loop through cookies (only hidden slides will be in the cookie)
    if (cookie = get_cookie('slides'))
    {

        slides = cookie.split('|');
        for (x = 0; x < slides.length; x++)
        {
            if (obj = document.getElementById(slides[x]))
            {
                obj.style.display = 'none';
                if (img = document.getElementById(slides[x] + "_image"))
                {
                    img.src = slide_closed;
                }
            }
        }

    }

}

function show_cookies()
{
    alert(document.cookie);
    //init_slides();
}

/******************************************************************************
 * show_hide(id)
 *
 * Show or hide the given object (based upon id) and save the state in a
 * cookie. you can optionally force an "open" or "close" regardless of cookie
 * status.
 *
 *****************************************************************************/
function show_hide(id, hide_it)
{

    obj = document.getElementById(id);
    if (obj)
    {
        obj.style.display = (obj.style.display == "none") ? "inline" : "none";
        visible = (obj.style.display == "inline") ? 1 : 0;

        // Show the div
        if (visible || (null != hide_it && false == hide_it))
        {
            delete_slide(id);
            if (img = document.getElementById(id + "_image"))
            {
                img.src = slide_opened;
            }
        }

        // Hide the div
        else
        {
            add_slide(id);
            if (img = document.getElementById(id + "_image"))
            {
                img.src = slide_closed;
            }
        }
    }

}

/******************************************************************************
 * show_hide_nc(id)
 *
 * Show or hide the given object (based upon id) and save the state in a
 * cookie. This is the "no cookie" version, so the state of the object is no
 * stored as a cookie
 *
 *****************************************************************************/
function show_hide_nc(id, hide_it)
{

    obj = document.getElementById(id);
    if (obj)
    {
        obj.style.display = (obj.style.display == "none") ? "inline" : "none";
        visible = (obj.style.display == "inline") ? 1 : 0;

        // Show the div
        if (visible || (null != hide_it && false == hide_it))
        {
            if (img = document.getElementById(id + "_image"))
            {
                img.src = slide_opened;
            }
        }

        // Hide the div
        else
        {
            if (img = document.getElementById(id + "_image"))
            {
                img.src = slide_closed;
            }
        }
    }

}

function add_slide(name)
{

    // delete name if it already exists (easier than checking for existance here)
    delete_slide(name);

    if (new_cookie = get_cookie('slides'))
    {
        new_cookie += '|' + name;
    }
    else
    {
        new_cookie = name;
    }

    set_cookie('slides', new_cookie);

}

function delete_slide(name)
{

    if (cookie = get_cookie('slides'))
    {

        new_slides = '';
        slides = cookie.split('|');
        for (x = 0; x < slides.length; x++)
        {
            if (slides[x] != name)
            {
                if (new_slides != '')
                {
                    new_slides += '|';
                }
                new_slides += slides[x];
            }
        }

        if (new_slides == '')
        {
            delete_cookie('slides');
        }
        else
        {
            set_cookie('slides', new_slides);
        }

    }

}

function ltrim(str)
{
    var x = 0;
    while ((str.charAt(x) == ' ') && (x < str.length)) x++;
    return str.substring(x, str.length);
}
  
function rtrim(str)
{
    var x = str.length - 1;
    while ((str.charAt(x) == ' ') && (x > 0)) x--;
    return str.substring(0, x + 1);
}
  
function trim(str)
{
    return ltrim(rtrim(str));
}
