/** -------------------------------------------------
* ttCollapse 0.9
* Updated: 04/21/09
* 
* Handcrafted by:		Jeroen Hulscher
* URL: 					www.jeroenhulscher.nl
** ------------------------------------------------- */

(function($) {
	$.fn.ttCollapse = function(options) {
		var defaults = {
		toggle			: "> *", 
		itemMinimum		: 3, 
		animationTime 	: 500,
		openText		: "Open", 
		closeText		: "Close", 
		linkLocation	: "after", 
		defaultState	: "collapsed",
		wrapLink		: null
	};

	var options = $.extend(defaults, options);
	return this.each(function() {
		if($(options.toggle, this).length > options.itemMinimum) {
		var $obj = $(this);
		var $targets = $(options.toggle, this);
		if(options.defaultState == "collapsed") {
		    $targets.filter(":gt(" + (options.itemMinimum - 1) + ")").hide(options.animationTime / 2);
		}
		var $toggler = $('<a href="#" class="elementToggle"></a>');
		if(options.linkLocation == "before") {
			$obj.before($toggler);
		} else {
			$obj.after($toggler);
		} if(options.wrapLink) {
			$toggler.wrap(options.wrapLink);
		}
		if(options.defaultState == "expanded") {
			$obj.data("status", "expanded");
			$toggler.addClass("expanded");
			$toggler.html(options.closeText);
		}
		else {
			$obj.data("status", "collapsed");
			$toggler.addClass("collapsed");
			$toggler.html(options.openText);
		}
		$toggler.click(function() {
			if($obj.data("status") == "collapsed") {
				$targets.filter(":hidden").fadeIn(options.animationTime);
				$toggler.html(options.closeText);
				$obj.data("status", "expanded");
			}
			else if($obj.data("status") == "expanded") {
				$targets.filter(":gt("+(options.itemMinimum-1)+")").hide(options.animationTime / 2);
				$toggler.html(options.openText);
				$obj.data("status", "collapsed");
			}
			$(this).toggleClass("collapsed").toggleClass("expanded");
				return false;
			});
		}
	});
}})(jQuery);
