var Toggle = function()
{
    var t = new Object();
    // -------------------------------------------------------
    // array of orginal element display values
    // -------------------------------------------------------
    var origStatus = new Array(1);

    var groups = new Array();

    //-------------------------------------------------------
    // hide/show parts of the page
    //-------------------------------------------------------
    t.element = function(id,noCookie,groupId)
    {
        var obj = document.getElementById("obj_" + id);

        if(groupId)
        {
            if(groups[groupId])
            {
                var obj2 = document.getElementById("obj_" + groups[groupId]);
                if(obj2)
                {
                    obj2.style.display = "none";
                }
            }
            groups[groupId] = id;
        }

        if(obj)
        {
            toggleSelect(obj);

            if(typeof origStatus[id] == 'undefined')
            {
                origStatus.splice(origStatus.length,1);

                origStatus[id] = obj.style.display;
            }

            var img = document.getElementById("img_" + id);

            if(obj.style.display == "none")
            {
                obj.style.display = "";

                if(img)
                {
                    img.src = img.src.replace('plus', 'minus');
                    img.src = img.src.replace('show', 'hide');
                }


            }
            else
            {
                obj.style.display = "none";

                if(img)
                {
                    img.src = img.src.replace('minus', 'plus');
                    img.src = img.src.replace('hide', 'show');
                }

            }

            if(!noCookie)
            {
                var hide = (origStatus[id] != obj.style.display);

                saveToCookie(id,hide);
            }
        }

        return false;
    }

    // -------------------------------------------------------
    // IE doesnt hide select tags without this function ...
    // -------------------------------------------------------
    var toggleSelect = function(obj)
    {
        var e = obj.getElementsByTagName("select");

        for(var i=0;i<e.length;i++)
        {
            if (e[i].style.display == "none")
            {
                e[i].style.display = "";
            }
            else
            {
                e[i].style.display = "none";
            }
        }
    }

    //-------------------------------------------------------
    // Tab switching code
    //-------------------------------------------------------

    var visibleTab="";

    t.tab = function(id,firstTabId)
    {
        if(visibleTab == "" && firstTabId)
        {
            visibleTab = firstTabId
        }

        if(id != visibleTab)
        {
            // clicked tab
            if(obj = document.getElementById(id + "_tab"))
            {
                addClass(obj,"on");
                
                if(obj = document.getElementById(id))
                {
                    addClass(obj,"on");
                }                
            }

            // previous tab
            if(obj = document.getElementById(visibleTab + "_tab"))
            {
                removeClass(obj,"on");
                if(obj = document.getElementById(visibleTab))
                {
                    removeClass(obj,"on");
                }                 
            }

            t.element(id,true);
            t.element(visibleTab,true);

            visibleTab=id;
        }
    }

    // -------------------------------------------------------
    // Hide all elements defined in cookie
    // -------------------------------------------------------
    var toggleByCookie = function()
    {
        var cookiedata = Cookie.get("hide");
        if (cookiedata)
        {
            cookiedata = cookiedata.split(":");
            for(var i in cookiedata)
            {
                t.element(cookiedata[i],true);
            }
        }
    }

    // -------------------------------------------------------
    // Save hide status to cookie
    // -------------------------------------------------------
    var saveToCookie = function(id,add)
    {
        var cookiedata = Cookie.get("hide");
        var tmp = new Array();

        if(cookiedata)
        {
            cookiedata = cookiedata.split(":");
            for(i in cookiedata)
            {
                if(cookiedata[i] != id && cookiedata[i] != "")
                {
                    tmp[tmp.length] = cookiedata[i];
                }
            }
        }

        if(add)
        {
            tmp[tmp.length] = id;
        }

        // DEBUG
        //alert("tmp:"+tmp);

        Cookie.set("hide",tmp.join(":"),1);
    }

    // -------------------------------------------------------
    // Set function handler to load event
    // -------------------------------------------------------
    Events.add(window,'load',toggleByCookie);

    return t;
}();

