/*
 * jQuery simpleAccordion plugin
 * @author Jonas Weidler (jquery@jonas-weidler.de)
 * @version 0.1.2
 * @date October 19, 2010
 * @category jQuery plugin
 * @requires jQuery 1.4.2
 * @copyright (c) 2010 Jonas Weidler
 * @license CC Attribution-Share Alike 3.0 - http://creativecommons.org/licenses/by-sa/3.0/
 */

(function($){
	$.fn.extend({ 
		simpleAccordion: function(options) {
			var defaults = 
			{
				slideSpeed: 500,
				classOpened: 'active',
				elTitle: 'title',
				elContents: 'contents',
				showOnLoad: 'none',
				event: 'click'
			};
			var options = $.extend(defaults, options);
			
			return this.each(function() {
								
				var opt = options;
				var obj = $(this);
				
				var objContents = $("."+opt.elContents, obj);
				var objTitle = $("."+opt.elTitle, obj);
				
				// setting a width prevents bumpy ending of slide transition
				// this is the only part that actually requires jQ 1.4 :-(
				var width = objContents.width();
				objContents.hide();
				objContents.css("width", width);
				
				objTitle.css({
					cursor: "pointer"
				});
				
				objContents.hide();
				var i = 1;
				objContents.each(function(){
					$(this).attr("rel", "set-contents-"+i);
					i++;
				});
				objTitle.bind(opt.event, function(event){
					var el = $(this);
					
					$("."+opt.elContents+"."+opt.classOpened, obj).each(function(){
						if (el.next().attr("rel") != $(this).attr("rel")) {
							$(this).slideUp(opt.slideSpeed).removeClass(opt.classOpened);
							objTitle.removeClass(opt.classOpened);
						}
					});
					
					isOpened = el.next().hasClass(opt.classOpened);
					switch (isOpened) {
						case true:
							el.next().slideUp(opt.slideSpeed).removeClass(opt.classOpened);
							objTitle.removeClass(opt.classOpened);
							break;
						case false:
							el.next().slideDown(opt.slideSpeed).addClass(opt.classOpened);
							el.addClass(opt.classOpened);
							break;
					}
					event.preventDefault();
				});
				
				if (opt.showOnLoad != 'none') objTitle.eq(opt.showOnLoad).trigger(opt.event);
			});
		}
	});
})(jQuery);
