function fieldset_make_collapsible(i, val) {
}

ZWE.Markup.CollapsibleFieldset = function () {
    return {
        symbolCollapsed: '\u25BA ',
        symbolExpanded: '\u25BC ',

        hideSiblings: function(id) {
            var siblings = $('#' +  id + ' > *:not(legend)');
            siblings.hide();
        },

        init: function() {
            $.each($('fieldset.collapsible-default'),
                ZWE.Markup.CollapsibleFieldset.makeCollapsible);
            $.each($('fieldset.collapsible-collapsed'),
                ZWE.Markup.CollapsibleFieldset.makeCollapsible);
        },
        
        makeCollapsible: function() {
            var fieldset = $(this);
            var id = fieldset.attr('id');
            if(id) {
		var legend = $('#' + id + ' legend');
		var html = legend.html();
		if(fieldset.attr('class') == 'collapsible-default') {
                    legend.html(ZWE.Markup.CollapsibleFieldset.symbolExpanded + html);
                    legend.click(function() {
                        ZWE.Markup.CollapsibleFieldset.toggle(id);
                    });
		}
		else {
                    legend.html(ZWE.Markup.CollapsibleFieldset.symbolCollapsed + html);
                    legend.click(function() {
                        ZWE.Markup.CollapsibleFieldset.toggle(id);
                    });
                    ZWE.Markup.CollapsibleFieldset.hideSiblings(id);
                }
            }
        },

        removeSymbol: function(input) {
            var posExpanded = input.indexOf(
                ZWE.Markup.CollapsibleFieldset.symbolExpanded);
            if(posExpanded != -1) {
                return input.substr(posExpanded + 1);
            }
            var posCollapsed = input.indexOf(
                ZWE.Markup.CollapsibleFieldset.symbolCollapsed);
            if(posCollapsed != -1) {
                return input.substr(posCollapsed + 1);
            }
            return input;
        },

        showSiblings: function(id) {
            var siblings = $('#' +  id + ' > *:not(legend)');
            siblings.show();
        },

        toggle: function(id) {
            var fieldset = $('#' + id);
            var legend = $('#' + id + ' > legend');
            if(fieldset.attr('class') == 'collapsible-collapsed') {
		legend.html(ZWE.Markup.CollapsibleFieldset.symbolExpanded +
                    ZWE.Markup.CollapsibleFieldset.removeSymbol(legend.html()));
		fieldset.attr('class', 'collapsible-default');
		ZWE.Markup.CollapsibleFieldset.showSiblings(id);
            }
            else {
		legend.html(ZWE.Markup.CollapsibleFieldset.symbolCollapsed +
                    ZWE.Markup.CollapsibleFieldset.removeSymbol(legend.html()));
		fieldset.attr('class', 'collapsible-collapsed');
		ZWE.Markup.CollapsibleFieldset.hideSiblings(id);
            }
       }
    }
}();

$(document).ready(function() {
    ZWE.Markup.CollapsibleFieldset.init();
});
