//
// Contractible Headers
//

// <a href="#" onClick="cl_expandcontent('cl_categorycontent');return false;"><span class="smallitalic">more...</span></a>
// <div id="cl_categorycontent" style="display:block;"> Content </div>
// <div id="cl_categorycontent" style="display:none;"> Content </div>
// <div class="cl_switchcontent" id="cl_categorycontent"> Content </div>

// class="cl_switchcontent" remembers last state, OR force state by adding style="display:none;" or style="display:block;" without class statement 

var cl_defaultstate="none"; // Enable saving state of content structure using session cookies? (none/block)
var cl_enablepersist="on"; // Enable saving state of content structure using session cookies? (on/off)
var cl_collapseprevious="no"; // Collapse previously open content when opening present? (yes/no)
var cl_ccollect = new Array();

if (document.getElementById)
{
    document.write('<style type="text/css">');
    document.write('.cl_switchcontent{display:none;}');
    document.write('</style>');
};

function cl_get_cookie(fname)
{
    var bikky = document.cookie;
    var index = bikky.indexOf(fname + "=");

    if (index == -1) { return null; }
    
    index = bikky.indexOf("=", index) + 1;
    
    var endstr = bikky.indexOf(";", index);

    if (endstr == -1) endstr = bikky.length;
    {
        return unescape(bikky.substring(index, endstr));
    }
};

function cl_set_cookie(fname, fvalue, hours)
{
    var today  = new Date();
    var expiry = new Date(today.getTime() + hours * 60 * 60 * 1000);

    if (fvalue != null && fvalue != "")
    {
        document.cookie = fname + "=" + escape(fvalue) + "; expires=" + expiry.toGMTString();
    }
};

function cl_getiframe(fname)
{
    var IFrameObj = document.getElementsByName(fname)[0];
    
    if (IFrameObj)
    {
        if (IFrameObj.contentDocument)
        {
            // For NS6
            return IFrameObj.contentDocument;
        } 
        else if (IFrameObj.contentWindow) 
        {
            // For IE5.5 and IE6
            return IFrameObj.contentWindow.document;
        } 
        else if (IFrameObj.document) 
        {
            // For IE5
            return document.frames(fname).document;
        }
    }
};

function cl_getobj(fname,fwhich)
{
    if (!fwhich) { fwhich = document; }

    if (fwhich.getElementById) 
    {
        return fwhich.getElementById(fname);
    }
    else if (fwhich.all)
    {
        return fwhich.all[fname];
    }
    else if (fwhich.layers)
    {
        return fwhich.layers[fname];
    }
};

function cl_getelementbyclass(classname)
{
    var inc  = 0;
    var alltags = document.all ? document.all : document.getElementsByTagName("*");

    for (i = 0;i < alltags.length; i++)
    {
        if (alltags[i].className == classname)
        {
            cl_ccollect[inc++] = alltags[i];
        }
    }
};

function cl_contractcontent(omit)
{
    var inc=0;

    while (cl_ccollect[inc])
    {
        if ((cl_ccollect[inc].id != omit) && (cl_ccollect[inc].style.display != "none") && (cl_ccollect[inc].style.display != "block")) 
        {
            cl_ccollect[inc].style.display = cl_defaultstate;
        }

        inc++;
    }

	return false;
};

function cl_contractspecific(id)
{
    var inc=0;

    while (cl_ccollect[inc])
    {	
        if (cl_ccollect[inc].id == id)
        {
            cl_ccollect[inc].style.display = "none";

			return true;
        }

        inc++;
    }

	return false;
};

function cl_expandcontent(cid)
{
    if (typeof cl_ccollect != "undefined")
    {
        if (cl_collapseprevious == "yes")
        {
            cl_contractcontent(cid);
        }

        cl_getobj(cid).style.display=(cl_getobj(cid).style.display!="block") ? "block" : "none";
        
        obj = cl_getobj(cid + 'plus');
        
        if (obj)
        {
            if (cl_getobj(cid).style.display != "block")
            {
                obj.innerHTML = '<img src="images/lm_plus.gif">';
            }
            else
            {
                obj.innerHTML = '<img src="images/lm_minus.gif">';
            }
        }
    }

	return false;
};

function cl_revivecontent()
{
    cl_selecteditem = cl_get_cookie("ch");

    if (cl_selecteditem)
    {
        cl_selectedcomponents = cl_selecteditem.split("|");

        for (i = 0;i < cl_selectedcomponents.length - 1; i++)
        {
            selres = cl_selectedcomponents[i].split("=");

            obj = cl_getobj(selres[0]);

            if (obj)
            {
                obj.style.display = (selres[1] == '1') ? "block" : "none";
            }
            
            obj = cl_getobj(selres[0] + 'plus');
            
            if (obj)
            {
                if (cl_getobj(selres[0]).style.display != "block")
                {
                    obj.innerHTML = '<img src="images/lm_plus.gif">';
                }
                else
                {
                    obj.innerHTML = '<img src="images/lm_minus.gif">';
                }
            }            
        }
    }
};

function cl_saveswitchstate()
{
    var inc = 0, cl_selecteditem = "";
    var cl_selectedcomponents = new Array();

    cl_selecteditem = cl_get_cookie("ch");

    if (cl_selecteditem)
    {
        ar = cl_selecteditem.split("|");

        for (i = 0;i < ar.length - 1; i++)
        {
            selres = ar[i].split("=");

            if (selres[0] != '')
            {
                cl_selectedcomponents[selres[0]] = selres[1];
            }
        }
    }

    while (cl_ccollect[inc])
    {
        if (cl_ccollect[inc].id != '')
        {
            if (cl_ccollect[inc].style.display == "block")
            {
                cl_selectedcomponents[cl_ccollect[inc].id] = "1";
            }
            else
            {
                cl_selectedcomponents[cl_ccollect[inc].id] = "0";
            }
        }

        inc++;
    }

    cl_selecteditem = '';

    if (cl_selectedcomponents)
    {
        for (i in cl_selectedcomponents)
        {
            cl_selecteditem += i + '=' + cl_selectedcomponents[i] + '|';
        }
    }

    cl_set_cookie("ch",cl_selecteditem,100);
};

function cl_setonload()
{
    cl_getelementbyclass("cl_switchcontent");
};

function cl_expandonload()
{
    cl_getelementbyclass("cl_switchcontent");

    cl_contractcontent("omitnothing");

    if (cl_enablepersist == "on" && typeof cl_ccollect != "undefined" && typeof cl_menuchange == "undefined")
    {
        cl_revivecontent();
    }
};

window.onload = cl_setonload; // This will just set in place the expandable content, but not actually expand the boxes
window.onload = cl_expandonload;

if (cl_enablepersist=="on" && document.getElementById)
{
    window.onunload = cl_saveswitchstate;
};
