$(document).ready(
	function(){
		xp_fold.run();
	}
);

var xp_fold = {
	config: {
		headlineClass: ".xp-header",
		speed: {
			up: 100,
			down: 500
		},
		headlineText: "open/close"
	},
	
	run: function () {
		var elements = $("div.tx-xpfold-fold");
		
		elements.each(function (){
			var element = $(this);
				
			/**
			Element auf-/zuklappbar?
			*/
			if (element.hasClass("fold")){
				
				/**
				Die Headline
				*/
				var headline = element.find(xp_fold.config.headlineClass+":first");
				if (headline.length){
					headline.addClass("tx-xpfold-headline");
				} else {
					/**
					Wenn keine Headline gefunden wurde eine erstellen
					*/
					element.prepend('<div class="tx-xpfold-headline"><h1>'+xp_fold.config.headlineText+'</h1></div>');
					headline = element.find("div.tx-xpfold-headline");
				}
				
				/**
				Headline aus der Box entfernen - der Rest ist der faltbare Content.
				Dann den Content wrappen und alles wieder in die Box schieben.
				*/
				headline.remove();
				var contentHtml = element.wrapInner('<div class="tx-xpfold-content"></div>').html();
				
				element.html(headline);
				element.append(contentHtml);
				
				var content = element.find("div.tx-xpfold-content");
				
				/**
				Cursor auf die Headline
				*/
				headline.css("cursor", "pointer");
				
				
				/**
				Ist die Box am Anfange geschlossen/geoeffnet?
				*/
				if (element.hasClass("closed")){
					content.hide();
				} else {
					headline.addClass("act");
				}
				
				/**
				Event-Handler auf die Headline legen
				*/
				headline.click(function () {
						if (headline.hasClass("act")) {
							content.slideUp(xp_fold.config.speed.up, function () { headline.removeClass("act");});
						} else {
							if (element.hasClass("closeOthers")){
								$("div.tx-xpfold-content:visible").slideUp(xp_fold.config.speed.up, 
									function () {
										$("div.tx-xpfold-headline").removeClass("act");
									}
								);
								content.slideDown(xp_fold.config.speed.down, function () { headline.addClass("act");});
							} else {
								content.slideDown(xp_fold.config.speed.down, function () { headline.addClass("act");});
							}
						}
				});
			}
		});
	}
	
};
