/**
 * @author mad@Max
 */
vB_XHTML_Ready.subscribe(function(){
	new vBSpoiler();
});

function vBSpoiler(){
	this.init();
}

vBSpoiler.prototype.init = function(){
	YAHOO.util.Event.delegate(YAHOO.util.Selector.query(".body_wrapper"), "click", this.toggle_collapse, ".spoiler > h2"); 
};

vBSpoiler.prototype.toggle_collapse = function(e){
	e = e || window.event;
	var Y = YAHOO.util;
	var h1 = {}, h2 = {}, fn = "backIn", head = Y.Event.getTarget(e), obj = Y.Dom.getNextSibling(head);

	h1.to = h2.to = 0;
	h2.from = 1;
	if (Y.Dom.hasClass(obj, "hidden")) {
		Y.Dom.addClass(obj, "hidesp");
		fn = "backOut";
		h2.from = 0;
		h1.to = parseInt((YAHOO.env.ua.ie ? obj.offsetHeight : Y.Dom.getStyle(obj, 'height')));
		h2.to = 1;
	}

	var slide = new Y.Anim(obj, {height: h1}, 0.4, Y.Easing[fn]);
	var fade = new Y.Anim(obj, {opacity: h2}, 0.3);
	Y.Dom.setStyle(obj, "overflow", "hidden");
	if (Y.Dom.hasClass(obj, "hidden")) {
		Y.Dom.setStyle(obj, "height", "0");
		Y.Dom.setStyle(obj, "opacity", "0");
		Y.Dom.removeClass(obj, "hidesp");
		Y.Dom.removeClass(obj, "hidden");
		slide.onComplete.subscribe(function(){
			fade.onComplete.subscribe(function(){
				Y.Dom.addClass(head, "vsqminus");
				obj.removeAttribute("style");
			});
			fade.animate();
		});
		slide.animate();
	}
	else {
		fade.onComplete.subscribe(function(){
			slide.onComplete.subscribe(function(){
				Y.Dom.addClass(obj, "hidden");
				Y.Dom.removeClass(head, "vsqminus");
				obj.removeAttribute("style");
			});
			slide.animate();
		});
		fade.animate();
	}
};