/* author: Bojan Mihelac http://source.mihelac.org */ var treetable_rowstate = new Array(); var treetable_callbacks = new Array(); function treetable_hideRow(rowId) { el = document.getElementById(rowId); el.style.display = "none"; } function treetable_showRow(rowId) { el = document.getElementById(rowId); el.style.display = ""; } function treetable_hasChildren(rowId) { res = document.getElementById(rowId + '_0'); return (res != null); } function treetable_getRowChildren(rowId) { el = document.getElementById(rowId); var arr = new Array(); i = 0; while (true) { childRowId = rowId + '_' + i; childEl = document.getElementById(childRowId); if (childEl) { arr[i] = childRowId; } else { break; } i++; } return (arr); } function treetable_toggleRow(rowId, state, force) { var rowChildren; var i; // open or close all children rows depend on current state force = (force == null) ? 1 : force; if (state == null) { row_state = ((treetable_rowstate[rowId]) ? (treetable_rowstate[rowId]) : 1) * -1; } else { row_state = state; } rowChildren = treetable_getRowChildren(rowId); if (rowChildren.length == 0) return (false); for (i = 0; i < rowChildren.length; i++) { if (row_state == -1) { treetable_hideRow(rowChildren[i]); treetable_toggleRow(rowChildren[i], row_state, -1); } else { if (force == 1 || treetable_rowstate[rowId] != -1) { treetable_showRow(rowChildren[i]); treetable_toggleRow(rowChildren[i], row_state, -1); } } } if (force == 1) { treetable_rowstate[rowId] = row_state; treetable_fireEventRowStateChanged(rowId, row_state); } return (true); } function treetable_fireEventRowStateChanged(rowId, state) { if (treetable_callbacks['eventRowStateChanged']) { callback = treetable_callbacks['eventRowStateChanged'] + "('" + rowId + "', " + state + ");"; eval(callback); } } function treetable_collapseAll(tableId) { table = document.getElementById(tableId); rowChildren = table.getElementsByTagName('tr'); for (i = 0; i < rowChildren.length; i++) { if (index = rowChildren[i].id.indexOf('_')) { // do not hide root elements if(index != rowChildren[i].id.lastIndexOf('_')) { rowChildren[i].style.display = 'none'; } if (treetable_hasChildren(rowChildren[i].id)) { treetable_rowstate[rowChildren[i].id] = -1; treetable_fireEventRowStateChanged(rowChildren[i].id, -1); } } } return (true); } function treetable_expandAll(tableId) { table = document.getElementById(tableId); rowChildren = table.getElementsByTagName('tr'); for (i = 0; i < rowChildren.length; i++) { if (index = rowChildren[i].id.indexOf('_')) { rowChildren[i].style.display = ''; if (treetable_hasChildren(rowChildren[i].id)) { treetable_rowstate[rowChildren[i].id] = 1; treetable_fireEventRowStateChanged(rowChildren[i].id, 1); } } } return (true); }