var Loader = {};

Loader.load = function(e, load) {
	if(load) {
		var dl = document.createElement("DIV");
		dl.className = "loading";
		dl.innerHTML = "Loading&hellip;";
		e.html(dl);
	} else {
		//e.removeChild(e.lastChild);
		e.html("");
	}
}

var Collapsibles = {};

Collapsibles.handleClick = function(evt) {
	var e = evt.target;
	if((e.tagName == "A" && e.href.indexOf("#") == -1) || e.type == "submit" || e.type == "checkbox") return;
	e = $(e).parents(".collapser").andSelf();
	if(e && e.hasClass("collapser")) {
		for(var c = e; c && !c.hasClass("collapsible"); c = c.parent());
		if(c) {
			Collapsibles.toggleCollapsible(e, c);

			evt.preventDefault();
			evt.stopPropagation();
			return false;
		}
	}
}

Collapsibles.toggleCollapsible = function(collapser, collapsible, show) {
	if(typeof(show) == "undefined") show = collapsible.hasClass("collapsed");

	if(collapser.hasClass("toggle-name")) {
		var text = collapser.html();
		if(show) text = text.replace("Show", "Hide");
		else text = text.replace("Hide", "Show");
		collapser.html(text);
	}

	if(show) collapsible.removeClass("collapsed");
	else collapsible.addClass("collapsed");

	var cb = collapser.attr("oncollapse");
	if(cb) {
		var target = collapser.attr("collapse-target");
		if(target) target = $("#" + target);
		else target = collapser;
		var p = cb.split(".");
		for(var o = window, i = 0; o[p[i]] && i < p.length; o = o[p[i]], i++);
		if(o) o(target, show);
	}
}

Collapsibles.prepare = function() {
	var collapsibles = $(".collapsible");
	for(var i = 0; i < collapsibles.length; i++) {
		$(collapsibles[i]).bind("click", Collapsibles.handleClick);
	}
}
$(document).ready(Collapsibles.prepare);
