/* collapse.js
 * 
 * Collapsable elements \o/
 *
 * Usage: Give the divs you wish to be collapsable a title in the form of collapse:paremeters;title
 * where title is the title you want the collapse button to have, and parameters is a comma separated
 * list of parameters. Possible parameters are:
 *
 * open - to have the div non-collapsed by default
 * title - to preserve the title
 *
 * Have fun.
 *
 *******************************/

var hasDOM = (document.createElement && document.getElementsByTagName);

function initCollapse() {
	regexp = /^collapse:(.*?);(.*)/i;
	el = document.getElementsByTagName('div');
	for (i = 0; i < el.length; i++) {
		e = el[i];
		match = regexp.exec(e.title);
		if (match) {
			if (match[1].indexOf(',') != -1) {
				params = match[1].split(',');
			} else {
				params = new Array(match[1]);
			}
			
			e.originalDisplay = e.style.display;
			s = document.createElement('span');
			
			paramOpen = false;
			paramTitle = false;
			
			for (a = 0; a < params.length; a++) {
				if (params[a].toLowerCase() == 'open') paramOpen = true;
				if (params[a].toLowerCase() == 'title') paramTitle = true;
			}
			
			if (paramOpen) {
				s.className = 'collapse';
			} else {
				e.style.display = 'none';
				s.className = 'collapse collapsed';
			}
			
			if (paramTitle) {
				e.title = match[2];
			} else {
				e.title = '';
			}
			
			s.appendChild(document.createTextNode(match[2]));
			
			s.onclick = toggleCollapse;
			
			e.parentNode.insertBefore(s, e);
		}
	}
}

function toggleCollapse() {
	e = this.nextSibling;
	if (e.style.display == 'none') {
		e.style.display = e.originalDisplay;
		this.className = 'collapse';
	} else {
		e.style.display = 'none';
		this.className = 'collapse collapsed';
	}
}

if (hasDOM) {
	evt = window.onload;
	window.onload = (typeof window.onload != 'function' ? initCollapse : function() { evt(); initCollapse(); });
}
