cInt = -1;
	doRemove = 0;

	mWidth = 120;
	mHeight = 20;
	lastnode= 0;
	lastgroup = 0;

	zindex=4;
	cInt = 0;
	dropshadow = 0;
	transparency = 85;
	transparent = '';
	shadowed = '';
	lastWidth = 0;

	re = new RegExp('microsoft','gi');
	globalNavigator = 'netscape';

	if (navigator.appName.match(re)) {
		globalNavigator = 'explorer';
	}

	arrow_image = 'images/arrow.gif';

	parentClassname = 'classMainmenu';
	childClassname = 'classSubmenu';
	drawStyle = 1;

	re = new RegExp('explorer','gi');

	if(navigator.appName.match(re) != null) {
	
		if (transparency < 100) {
			transparent = 'filter:progid:DXImageTransform.Microsoft.Alpha( Opacity=' + transparency + ', FinishOpacity=0, Style=0)';
		}

		if (dropshadow) {
			shadowed = "filter:progid:DXImageTransform.Microsoft.Shadow(color='" + shadow_color + "', Direction=135, Strength=4)";
		}
	}
	
	z_index = 24;
	iteration = ';';
	lastgroup = -1;
	lastnode = -1;

	function addMainTable(html,node,x,y) {

		z_index++;

		span_table = '<div id="tablenode_' + node + '" style="">\n';

		span_table += html;

		span_table += '</div>';
		

		document.getElementById('tree').innerHTML = span_table;

	}

	function switchStyle(node,action,parent) {

		if (action == 'out') {

			//if (parent == 0) {
				document.getElementById('node_' + node).style.fontWeight = 'normal';
			//} else {
			//	document.getElementById('node_' + node).style.color = normal_color;
			//}

		} else {
			//if (parent == 0) {
				document.getElementById('node_' + node).style.fontWeight = 'bold';
			//} else {
			//	document.getElementById('node_' + node).style.color = hover_color;
			//}
			
		}

	}

	function createTable(tree_group,tree_node,type) {

		var span_table,i;

		bck_color = 'style="background-color:' + normal_color + ';"';
		menu_class = 'classSubmenu';
		stroke_style = 'border-style:solid;border-width:0px;border-bottom-width:0px;border-color:' + stroke_color + '';

		shadow_style = shadowed;
		alpha_style = transparent;
		tdClassname = 'classSubmenu';
		tdSubClassname = 'classIHTML';
		extraLi = '';
		margin = '';

		if (tree_node == 0) {
			stroke_style = '';
			bck_color = '';
			menu_class = 'classMainmenu';
			shadow_style = '';
			alpha_style = '';
			tdClassname = 'classMainmenu';
			tdSubClassname = 'classMainmenu';
			extraLi = '&nbsp;<img src="images/dot.gif" alt="">';
			extraLi = '&nbsp;&bull;';
			margin = 'margin: 0 0 0 auto; width: 178px;';
		}

		

		span_table = '<table cellpadding="0"  cellspacing="0" style=" ' + margin + stroke_style + ';' + shadow_style + ';' + alpha_style + '">';

		if (type == 0) {
			span_table += '<tr>\n'; 
		}

		for (i in Tree[tree_node]) {



			if (type == 1) {
				span_table += '<tr>\n'; 
			}

			img_src = '&nbsp;';

			if (Tree[Tree[tree_node][i][3]]) {
				img_src = '<img src="' + arrow_image + '">';
			}		
		
			span_table += '<td nowrap id=\"node_' + Tree[tree_node][i][3]+ '" ';
			span_table += 'onmouseout="setRemove();switchStyle(' + Tree[tree_node][i][3] + ',\'out\',' + tree_node + ')"';
			span_table += 'onmouseover="switchStyle(' + Tree[tree_node][i][3] + ',\'in\',' + tree_node + ');clearRemove();style.cursor=\'pointer\'; doCollapse(' + tree_node + ',' +  Tree[tree_node][i][3]  + ')"';
			span_table += 'class="' + tdClassname + '"';
			span_table += 'onclick="loadURL(\'' + Tree[tree_node][i][1] + '\',\'' + Tree[tree_node][i][2] + '\')">\n';
			
			span_table += '<table style="width: 100%;" cellpadding="0" cellspacing="0"><tr><td class="' + tdSubClassname + '">';
			span_table += '&nbsp;' + Tree[tree_node][i][0] + extraLi + '&nbsp;</td>\n';
			span_table += '<td width=10  ' + bck_color + '>' + img_src + '</td>';
			span_table += '</tr></table></td>';

			if (type == 1) {
				span_table += '</tr>\n'; 
			}

			if (tree_node != 0) {
				span_table += '<tr>\n'; 
				span_table += '<td style="font-size:2px; height: 8px;">&nbsp;</td>';
				span_table += '</tr>\n'; 
			}

		}
		
		if (type == 0) {
			span_table += '</tr>\n';
		}

		span_table += '</table></div>\n';

		

		return span_table;

	}


	function buildMenu() {
		
		var html;

		html = createTable(0,0,drawStyle);
		addMainTable(html,0,0,0);

	}

	function get_position_x(objectElement) {
	

		leftOffset = 0;
		trigger = 0;

		while (objectElement.parentNode) {
			
			if (objectElement.parentNode.id == 'tree') {
				trigger = 1;
			}

			if (objectElement.parentNode.offsetLeft && trigger == 0) {
				leftOffset += parseFloat(objectElement.parentNode.offsetLeft);// + parseFloat(objectElement.parentNode.offsetWidth);
			}

			objectElement = objectElement.parentNode;

		}

		return leftOffset;

	}

	function get_position_y(objectElement) {
		
		
		topOffset = 0;
		trigger = 0;

		while (objectElement.parentNode) {
			
			if (objectElement.parentNode.id == 'tree') {
				trigger = 1;
			}

			if (objectElement.parentNode.offsetLeft && trigger == 0) {
				leftOffset += parseFloat(objectElement.parentNode.offsetTop);// + parseFloat(objectElement.parentNode.offsetWidth);
			}

			objectElement = objectElement.parentNode;

		}

		return topOffset;
	}

	function destroyAll(group) {

		var elem,elements,elemental,r,f,i;

		elements = d.split(';' + group + ';');
		
		if (!elements[1] ) { 
			return;
		}

		
		elemental = elements[1].split(';');

		
		r = ';';

		for (i=0;i<elemental.length;i++) {

			elem = document.getElementById('tablenode_' + elemental[i]);
		

			if (elem ) {
			
				elem.style.visibility = 'hidden';
				r = elemental[i] + ';';
			}
		}
	}

	function clearRemove() {

		doRemove = 0;

	}

	function setRemove() {

		doRemove = 1;
		collectGarbage(0);

	}

	function collectGarbage(timer) {
		
		if (doRemove == 0) {
			return;
		}
	
		if (timer == 0) {
			doRemove = 1;
			cInt = window.setTimeout('collectGarbage(1)',1000);
		} else {

			var r,elemental,elem;

			if (doRemove == 0) {
				clearTimeout(cInt);
				return;
			}
			
			elemental = d.split(';');
			
			r = ';';

			for (i=0;i<elemental.length;i++) {

				elem = document.getElementById('tablenode_' + elemental[i]);

				if (elem && elemental[i] != 0) {
					elem.style.visibility = 'hidden';
					r = elemental[i] + ';';
				}
			}

			doRemove = 0;
		}
	}

	function loadURL(url,target) {

		doRemove = 1;
		collectGarbage(1);

		if (url.match('http://|www')) {
			if (!url.match('http://')) {
				url = 'http://' + url;
			}
			target = '_blank';
		}
		
		if (target != '_blank') {
			document.location = url;
		} else {
			window.open(url,'','');
		}
	}

	function loadHomepage() {
		//document.getElementById('pageFrame').src = 'page.php?parent=0&page=251';
	}

	function addTable(html,node,x,y) {

		var reference;

		
		if (globalNavigator == 'explorer') {
			x += document.getElementById('node_' + node).clientWidth;
			divHTML = '<div id="tablenode_' + node + '" style="position: absolute; left: ' + x + 'px; top: ' + y + 'px;  z-index: ' + z_index + '">';
		} else {
			divHTML = '<div id="tablenode_' + node + '" style="position: absolute; left: ' + x + 'px; top: ' + y + 'px;  z-index: ' + z_index + '">';
		}
		
		divHTML += html + '</div>';


		document.getElementById('mainBody').innerHTML += divHTML;
		//document.body.innerHTML += divHTML;

		z_index++;

		
	}

	

	function destroyItem(node) {

		var d_element;
		document.getElementById('tablenode_' + node).style.display = 'none';
		
	}

	d = ';';


	function doCollapse(group,node) {	


		var html,x,y,gm,nm;

		if (cInt != -1) {
			doRemove = 0;
			clearTimeout(cInt);
		}

		if (group == lastgroup && lastnode != node && Tree[lastnode]) {
			//destroyItem(lastnode);
		}

		if (!d.match(';' + group + ';')) {
			d += group + ';';
		}

		if (node == lastgroup && !d.match(';' + node + ';')) {

			d += node + ';';
		}

		if (Tree[node]  && !d.match(';' + node + ';')) {

			d += node + ';';
		}

		
		destroyAll(group);
		
		lastgroup = group;
		lastnode = node;

		if (!Tree[node]) {
			
			return;
		}

		parent_element = document.getElementById('node_' + node);

		x = get_position_x(parent_element);
		y = get_position_y(parent_element);

		explorerY = 0;
		explorerX = 0;
		obj = parent_element;

		if (obj.offsetParent) {
			while (obj.offsetParent) {
				explorerY += obj.offsetTop
				explorerX += obj.offsetLeft
				obj = obj.offsetParent;
			}
		} else if (objectElement.y) {
			explorerY += obj.y;
			explorerX += obj.x
		}

		y = explorerY;
		x = explorerX;

		if (globalNavigator == 'netscape') {
			x += parent_element.offsetWidth;
		}
		
		if (group == 0) {
			y -= 2;
		}

		//x -= 10;
		y += 10;

		
		if (!document.getElementById('tablenode_' + node)) {

			html = createTable(group,node,1);
			addTable(html,node,x,y);

		} else {

			if (globalNavigator == 'explorer') {
				x += document.getElementById('node_' + node).clientWidth;
			}
			
			document.getElementById('tablenode_' + node).style.top = y + 'px';
			document.getElementById('tablenode_' + node).style.left = x + 'px';

			document.getElementById('tablenode_' + node).style.visibility = 'visible';

		}


	}
