document.onselectstart=new Function ("window.event.returnValue=false; window.event.cancelBubble=true;"); function autoInit_trees() { var candidates = document.getElementsByTagName('ul'); for(var i=0;i<candidates.length;i++) { if(candidates[i].className && candidates[i].className.indexOf('tree') != -1) { initTree(candidates[i]); candidates[i].className = candidates[i].className.replace(/ ?unformatted ?/, ' '); } } } function initTree(el) { var i,j; var spanA, spanB, spanC; var startingPoint, stoppingPoint, childUL; for(i=0;i<el.childNodes.length;i++) { if(el.childNodes[i].tagName && el.childNodes[i].tagName.toLowerCase() == 'li') { var li = el.childNodes[i]; spanA = document.createElement('span'); spanB = document.createElement('span'); spanC = document.createElement('span'); spanD = document.createElement('span'); spanA.appendChild(spanB); spanB.appendChild(spanC); spanC.appendChild(spanD); spanA.className = 'a ' + li.className.replace('closed','spanClosed'); spanA.onMouseOver = function() {}; spanB.className = 'b'; spanB.onclick = treeToggle; spanC.className = 'c'; spanD.className = 'd'; stoppingPoint = li.childNodes.length; startingPoint = 0; childUL = null; for(j=0;j<li.childNodes.length;j++) { if(li.childNodes[j].tagName && li.childNodes[j].tagName.toLowerCase() == 'div') { startingPoint = j + 1; continue; } if(li.childNodes[j].tagName && li.childNodes[j].tagName.toLowerCase() == 'ul') { childUL = li.childNodes[j]; stoppingPoint = j; break; } } for(j=startingPoint;j<stoppingPoint;j++) { spanD.appendChild(li.childNodes[startingPoint]); } if(li.childNodes.length > startingPoint) li.insertBefore(spanA, li.childNodes[startingPoint]); else li.appendChild(spanA); spanA.title = spanA.innerText; if(childUL != null) { if(initTree(childUL)) { addClass(li, 'children', 'closed'); addClass(spanA, 'children', 'spanClosed'); } } } } if(li) { addClass(li, 'last', 'closed'); addClass(spanA, 'last', 'spanClosed'); return true; } else { return false; } } function treeToggle(el, force) { el = this; while(el != null && (!el.tagName || el.tagName.toLowerCase() != "li")) el = el.parentNode; var childSet = findChildWithTag(el, 'ul'); var topSpan = findChildWithTag(el, 'span'); if( force != null ){ if( force == "open"){ treeOpen( topSpan, el ) } else if( force == "close" ){ treeClose( topSpan, el ) } } else if( childSet != null) { if(!el.className.match(/(^| )closed($| )/)) { treeClose( topSpan, el ) } else { treeOpen( topSpan, el ) } } } function treeOpen( a, b ){ removeClass(a,'spanClosed'); removeClass(b,'closed'); } function treeClose( a, b ){ addClass(a,'spanClosed'); addClass(b,'closed'); } function findChildWithTag(el, tag) { for(var i=0;i<el.childNodes.length;i++) { if(el.childNodes[i].tagName != null && el.childNodes[i].tagName.toLowerCase() == tag) return el.childNodes[i]; } return null; } function addClass(el, cls, forceBefore) { if(forceBefore != null && el.className.match(new RegExp('(^| )' + forceBefore))) { el.className = el.className.replace(new RegExp("( |^)" + forceBefore), '$1' + cls + ' ' + forceBefore); } else if(!el.className.match(new RegExp('(^| )' + cls + '($| )'))) { el.className += ' ' + cls; el.className = el.className.replace(/(^ +)|( +$)/g, ''); } } function removeClass(el, cls) { var old = el.className; var newCls = ' ' + el.className + ' '; newCls = newCls.replace(new RegExp(' (' + cls + ' +)+','g'), ' '); el.className = newCls.replace(/(^ +)|( +$)/g, ''); }  _LOADERS = Array(); function callAllLoaders() { var i, loaderFunc; for(i=0;i<_LOADERS.length;i++) { loaderFunc = _LOADERS[i]; if(loaderFunc != callAllLoaders) loaderFunc(); } } function appendLoader(loaderFunc) { if(window.onload && window.onload != callAllLoaders) _LOADERS[_LOADERS.length] = window.onload; window.onload = callAllLoaders; _LOADERS[_LOADERS.length] = loaderFunc; } appendLoader(autoInit_trees); 
