;(function($){
    $(function(){
        /*
         * Global Function for Hiding and Showing Elements
         * class='adc_hider_{id}' is the action element
         * class='adc_hide_{id}' is the element affected
         */
        var hash = location.hash;
        function togglePlusMinus(symbol){
            symbol = typeof symbol === "string" ? symbol : "+";
            var h = $(this).text().replace(/^(\+|-) /,"");
            $(this).text(symbol + " " + h);
        }
        function toggle(el,force){
            $(el).removeClass("selected");
            var i = /_adc_hider_(\d*)/.exec(el.className)[1],
            q = $("._adc_hide_"+i);
            if(q.is(":hidden")){
                q.show();
                togglePlusMinus.call(el,"-");
            } else {
                q.hide();
                togglePlusMinus.call(el,"+");
            }
        }
        var hidden = $("*[class^=_adc_hide_]").hide();
        var hiders = $("*[class^=_adc_hider_]").click(function(e){
            e.preventDefault();
            toggle(this);
        }).each(togglePlusMinus);
        $("a").live("click",function(){
            var match = /#.*/.exec(this.href)[0];
            if(match){
                hidden.hide();
                hiders.each(togglePlusMinus);
                $(".selected").removeClass("selected");
                $(match).click().addClass("selected");
            }
        });
        if(hash){
            $(hash).click().addClass("selected");
        }
    });
})(jQuery);