/**
 * --------------------------------------------------------------------
 * jQuery collapsible plugin
 * Author: Scott Jehl, scott@filamentgroup.com
 * Copyright (c) 2009 Filament Group
 * licensed under MIT (filamentgroup.com/examples/mit-license.txt)
 * --------------------------------------------------------------------
 * Patched to not always immediately collapse the target elements,
 * and to assume that jQuery is called "jQuery" rather than "$".
 * Patched to make the initial collapse instant.
 * Patched to allow collapsibleContent to be specified,
 * * with a jQuery object or a function that returns one.
 */
(function($){
$.fn.collapsible = function(initiallyExpanded,suppliedCollapsibleContent){
	return $(this).each(function(){
		var collapsibleContent = suppliedCollapsibleContent;
		var collapsibleHeading = $(this);
		if (collapsibleContent === undefined) {
			collapsibleContent = collapsibleHeading.next();
		} else if (typeof collapsibleContent === "function") {
			collapsibleContent = collapsibleContent(this);
		}
		//modify markup & attributes
		collapsibleHeading.addClass('collapsible-heading')
			.prepend('<span class="collapsible-heading-status"></span>')
			.wrapInner('<a href="#" class="collapsible-heading-toggle"></a>');

		collapsibleContent.addClass('collapsible-content');

		//events
		collapsibleHeading
			.bind('collapse', function(){
				$(this)
					.addClass('collapsible-heading-collapsed')
					.find('.collapsible-heading-status').text('Show ');

				collapsibleContent.slideUp(function(){
					$(this).addClass('collapsible-content-collapsed').removeAttr('style').attr('aria-hidden',true);
				});
			})
			.bind('expand', function(){
				$(this)
					.removeClass('collapsible-heading-collapsed')
					.find('.collapsible-heading-status').text('Hide ');

				collapsibleContent
					.slideDown(function(){
						$(this).removeClass('collapsible-content-collapsed').removeAttr('style').attr('aria-hidden',false);
					});
			})
			.click(function(){
				if( $(this).is('.collapsible-heading-collapsed') ){
					$(this).trigger('expand');
				} else {
					$(this).trigger('collapse');
				}
				return false;
			});
        if (!initiallyExpanded) {
            collapsibleHeading.addClass('collapsible-heading-collapsed')
                .find('.collapsible-heading-status').text('Show ');
            collapsibleContent.hide().addClass('collapsible-content-collapsed')
                .removeAttr('style').attr('aria-hidden',true);
        } else {
            collapsibleHeading.removeClass('collapsible-heading-collapsed')
                .find('.collapsible-heading-status').text('Show ');
            collapsibleContent.show().removeClass('collapsible-content-collapsed')
                .removeAttr('style').attr('aria-hidden',false);
        }
	});
};
})(jQuery);
