var ie = document.all?1:0;
var ns4 = document.layers?1:0;

function expTree(E){
	var classid;
	var class_level;
	var level_total;
	var I, N;
	var bExpanding;
	E = fnDL(E);
	classid = fnObjID(E);

	level_total = Math.ceil(classid.length/step);
	class_level = MathLevel(classid, step, level_total);
	I=findImg(E);
	if (I.src.indexOf('toc_plus.gif')>0) {I.src='/images/toc_minus.gif';bExpanding=true;}
	else if (I.src.indexOf('toc_minus.gif')>0) {I.src='/images/toc_plus.gif';bExpanding=false;}
	N=E.nextSibling
	while (fnMark(fnObjID(N), level_total-class_level, step)==classid){
		if (bExpanding) {
			if (MathLevel(fnObjID(N), step, level_total)-1==class_level){N.style.display='block';}
		}else {
			N.style.display='none';
			if (typeof(N.onclick)=='function'){findImg(N).src='/images/toc_plus.gif';}
		}

		if (N.nextSibling==null){break;}
		else {N=N.nextSibling;}
	}
}

function expTreeLeaf(E){
	var classid, fatherid;
	var class_level;
	var level_total;
	var I, N, Lstr, nodeid;
	E.className='outborder';
	E = fnDL(E);
	Lstr = E.id.substr(0, 2);
	classid = fnObjID(E);
	level_total = Math.ceil(classid.length/step);
	class_level = MathLevel(classid, step, level_total);
	N = document.getElementById(Lstr.toString()+fnMark(classid, level_total-1, step));
	if (typeof(N)=='undefined'){
		N = document.getElementById(Lstr.toString()+fnMark(classid, level_total-2, step));
	}
	while (fnMark(fnObjID(N), level_total-1, step)==fnMark(classid, level_total-1, step)){
		if (fnObjID(N)==fnMark(classid, level_total-MathLevel(fnObjID(N), step, level_total), step)){
			I=findImg(N);
			I.src='/images/toc_minus.gif';
		}
		if (fnMark(classid, level_total-MathLevel(fnObjID(N), step, level_total)+1, step)==fnMark(fnObjID(N), level_total-MathLevel(fnObjID(N), step, level_total)+1, step)){N.style.display='block';}

		if (N.nextSibling==null){break;}
		else {N=N.nextSibling;}
	}
}



function MathLevel(c_id, step, lev_t){
	var c_lev=0;
	for (var i=0;i<=lev_t-1;i++){
		if (c_id%Math.pow(10,step*i)==0){c_lev = lev_t - i;}
	}
	return c_lev;
}

function findImg(E){
	if ((typeof(E)=='object')&&(E.childNodes(0).nodeName!='#text')&&(typeof(E.childNodes(0).all['image'])=='object')){
		E = E.childNodes(0).all['image'];
	} else {
		for (var i=0;i<E.childNodes.length;i++){
			if (E.childNodes[i].nodeName=='IMG'){
				E = E.childNodes[i];
				break;
			}
		}
	}
	return E;
}

function fnObjID(E){return E.id.substr(2, E.id.length-2);}

function fnMark(c_id, m_lev, step){
	var nodeid = c_id.substr(0, c_id.length-m_lev*step);
	var right = (Math.pow(10, m_lev*step)).toString();
	right = right.substr(1, right.length);
	nodeid = nodeid + right;
	//while (nodeid.length % step != 0) {
	//	nodeid = '0'+nodeid
	//}

	return nodeid;
}

function fnDL(E) {
	if (ie){while (E.tagName!="DIV") {E=E.parentElement;}}
	else{while (E.tagName!="DIV") {E=E.parentNode;}}
	return E;
}


