/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

(function($){
	var options = {
		header        : "h1",
		accordionMode : false,
		defaultClass  : "accordion-header-default",
		activeClass   : "accordion-header-active"
	};

	$.fn.collapsiblelist = function(_options) {
		options = $.extend(true, options, _options);

		return this.each(function () {
			var $ul = $(this);

			if(this.nodeName.toLowerCase() == "ul") {
				var first = true;

				$ul.children("li").each(function() {
					var $li = $(this);

					$li.find(options.header).eq(0).click(function() {
						var $header = $(this);
						var $body = $header.next();
						var currentHeader = this;

						// Segment Zusammenklappen
						if($header.hasClass(options.activeClass)) {
							// Das Element kann nur zusammengeklappt werden wenn
							// der Akkordion Modus nicht aktiv ist
							if(!options.accordionMode) {
								$header.removeClass(options.activeClass);
								$header.addClass(options.defaultClass);
								$body.hide();
							}
						// Segment ausklappen
						} else if($header.hasClass(options.defaultClass)) {
							$header.removeClass(options.defaultClass);
							$header.addClass(options.activeClass);
							$body.show();

							// Wenn der Akkordion-Modus aktiv ist, muessen
							// alle anderen ausgeklappten Segmente eingeklappt
							// werden
							if(options.accordionMode) {
								$ul.find("." + options.activeClass).each(function() {
									if(this != currentHeader) {
										$(this)
										.removeClass(options.activeClass)
										.addClass(options.defaultClass)
										.next().css("display", "none");
									}
								});
							}
						}
					})
					.addClass(first ? options.activeClass : options.defaultClass)
					.removeClass(first ? options.defaultClass : options.activeClass)
					.next().css("display", first ? "block" : "none");

					if(first) first = false;
				});
			}
		});
	}
})(jQuery)