addEvent(window,"load",init);

function init() {
	var table, rows, i, curr, pad, old_pad;
	table = document.getElementById('tree');
	if (table == null) return;
	if (/table/i.test(table.nodeName)) {
		rows = table.rows;
	} else {
		rows = table.childNodes;
	}
	for(i = 0; i < rows.length; i++) {
		if (/p([0-9]+)/.test(rows[i].className)) {
			curr = parseInt(RegExp.$1);
			if (curr > 0) {
				rows[i].className = rows[i].className.concat(' hide');
				//rows[i].style.display = "none";
			}
			addEvent(rows[i],"click",clicker);
		}
		if (/l([0-9]+)/.test(rows[i].className)) {
			pad = parseInt(RegExp.$1);
			if (/tr/i.test(rows[i].nodeName)) {
				rows[i].firstChild.style.paddingLeft = (pad*16)+"px";
			} else {
				rows[i].style.marginLeft = (pad*16)+"px";
			}
		}
	}
	for(i = 0; i < rows.length; i++) {
		if (/folder_open/.test(rows[i].className)){
			rows[i].className = rows[i].className.replace(/folder_open/g,'folder');
			switcher(rows[i]);
		}
	}
}

function closer(id) {
	var table, rows, i, curr, c_level;
	table = document.getElementById('tree');
	if (/table/i.test(table.nodeName)) {
		rows = table.rows;
	} else {
		rows = table.childNodes;
	}
	for(i = 0; i < rows.length; i++) {
		if (/p([0-9]+)/.test(rows[i].className)) {
			curr = parseInt(RegExp.$1);
			if (curr == id) {
				rows[i].className = rows[i].className.concat(' hide');
				//rows[i].style.display = "none";
				if (/folder_open/.test(rows[i].className)) {
					rows[i].className = rows[i].className.replace(/folder_open/g,'folder');
				}
				/i([0-9]+)/.test(rows[i].className);
				c_level=parseInt(RegExp.$1);
				closer(c_level);
			}
		}
	}
	return;
}

function clicker() {
	switcher(this);
}

function switcher(e) {
	var c_level, row, curr;
	if (!/folder_open/.test(e.className)){
		e.className = e.className.replace(/folder/g,'folder_open');
		/i([0-9]+)/.test(e.className);
		c_level=parseInt(RegExp.$1);
		row = e.nextSibling;
		while ((row != null)) {
			if (row.nodeType == 1) {
				/p([0-9]+)/.test(row.className)
				curr = parseInt(RegExp.$1);
				if (curr == c_level) {
					row.className = row.className.replace(/ hide/g,'');
					/*
					if (/tr/i.test(row.nodeName)) {
						row.style.display = "table-row";
					} else {
						row.style.display = "block";
					}
					*/
				}
			}
			row = row.nextSibling;
		}
	} else {
		e.className = e.className.replace(/folder_open/g,'folder');
		/i([0-9]+)/.test(e.className);
		c_level=parseInt(RegExp.$1);
		closer(c_level);
	}
}
