var treeNodeNum = 1;
var treeContainer = null;
relPath = relPath + 'includes/menu/';
function Node(txt, theLink, where){
	var tmp="", i;
	if(!where){
		if(!treeContainer){
			//treeContainer = document.body;
			treeContainer = document.createElement('DIV');
			treeContainer.id = 'treeContainer';
			//treeContainer.style.position = "absolute";
			//treeContainer.style.left = left;
			//treeContainer.style.top = top;

			document.write(treeContainer.outerHTML);
			treeContainer = getElement('treeContainer', "DIV");

			//document.body.appendChild(treeContainer);
		}
		where = treeContainer;
		depth = 0;
	} else {
		depth = where.depth;
	}
	var node = document.createElement('DIV');
	if (where == treeContainer) 
	{
		node.style.display = "block";
	}
	else 
	{
		node.style.display = "none";
	}
	node.depth = depth+1;
	node.num = treeNodeNum;
	node.id = "node"+treeNodeNum;
	node.className = "treeNode";
	for (i=0;i<depth;i++) {
		tmp+='<img src="'+relPath+'nimic.gif" width="10" height="13" border="0">';
	}
	if (theLink) {
		txt = "<a href=\""+theLink+"\" onclick=\"expimpNode("+treeNodeNum+");return true;\" class=treeNode>"+txt+"</a>";
	}
	node.innerHTML = tmp+"<a href='javascript:expimpNode("+treeNodeNum+");' id=anode"+treeNodeNum+" num="+treeNodeNum+'></a><img src="'+relPath+'nimic.gif" width="16" height="13" border="0">'+txt;
	node.addNode = addNode;
	node.showSubNodes = showSubNodes;
	node.expandNodes = expandNodes;
	node.hideSubNodes = hideSubNodes;
	if(where){
		where.appendChild(node);
	}
	treeNodeNum++;
	return node;
}

function addNode(txt, theLink){
	var tmp = getElement("anode"+this.num, "A"), i;
	if(tmp && !tmp.innerHTML){
		tmp.innerHTML = '<img src="'+relPath+'plus.gif" id="imgnode'+this.num+'" border="0" width="16" height="13">';
		for(i=0;i<this.childNodes.length;i++){
			if(this.childNodes[i] == tmp){
				this.childNodes[i+1].style.display="none";
				break;
			}
		}
	}
	return new Node(txt, theLink, this);
}

function expimpNode(node){
	var tmp=getElement("imgnode"+node, "IMG");
	if(!tmp){
		return false;
	}
	if(tmp.src.match(/plus/)){
		tmp.src = tmp.src.replace(/plus.gif/i,"minus.gif");
		parentElement = getElement("node"+node, "DIV");
		parentElement.showSubNodes();
	} else {
		tmp.src = tmp.src.replace(/minus.gif/i,"plus.gif");
		parentElement = getElement("node"+node, "DIV");
		parentElement.hideSubNodes();
	}
}

function showSubNodes(){
	var i;
	for(i=0;i<this.childNodes.length;i++){
		if (this.childNodes[i].className == "treeNode" && this.childNodes[i].tagName == "DIV" ) {
			this.childNodes[i].style.display = "block";
		}
	}
}

function hideSubNodes(){
	var i;
	for(i=0;i<this.childNodes.length;i++){
		if (this.childNodes[i].className == "treeNode" && this.childNodes[i].tagName == "DIV") {
			this.childNodes[i].style.display = "none";
		}
	}
}

function expandNodes() {
	var tmp = this.id + '';
	expimpNode(tmp.replace(/node/, ''));
}


function nav4GetLayerById(id, tag) {
	return nav4FindLayer(this, tag, id);
}

function nav4FindLayer(doc, tag, id) {
	var i;
	var subdoc;
	var obj;
	if(tag=="DIV"){
		eval("tmp=document.tags."+id);
		return tmp;
		for (i = 0; i < doc.layers.length; i++) {
			if (doc.layers[i].id && id == doc.layers[i].id){
				return doc.layers[i];
			}
			subdoc = doc.layers[i].document;
			obj = nav4FindLayer(subdoc, tag, id);
			if (obj != null) {
				return obj;
			}
		}
	}
	if(tag=="A"){
		var re_id = /expimpNode\(([0-9]+)\)/i;
		for(i=0; i < doc.links.length ; i++){
			var rID=doc.links[i].href.match(re_id);
			if(rID){
				var zid="anode"+rID[1];
				if(zid==id){
					return doc.links[i];
				}
			}
		}
		return null;
	}
	if(tag=="IMG"){
		var re_id = /\?num=([0-9]+)/i;
		for(i=0; i < doc.images.length ; i++){
			var rID=doc.images[i].src.match(re_id);
			if(rID){
				var zid="imgnode"+rID[1];
				if(zid==id){
					return doc.images[i];
				}
			}
		}
		return null;
	}
}

function BrowserCheck() {
	var b = navigator.appName;
	var up = navigator.platform;
	var ua = navigator.userAgent;

	this.netscape=this.mozilla=this.ie=this.opera=r=false;
	var re_opera = /Opera.([0-9\.]*)/i;
	var re_msie = /MSIE.([0-9\.]*)/i;
	var re_gecko = /gecko/i;
	if(r=ua.match(re_opera)){
		this.opera=true;
		this.version = parseFloat(r[1]);
	}else if(r=ua.match(re_msie)){
		this.ie=true;
		this.version = parseFloat(r[1]);
	}else if(ua.match(re_gecko)){
		var re_gecko_version = /rv:\s*([0-9\.]+)/i;
		r=ua.match(re_gecko_version);
		this.mozilla=true;
		this.version = parseFloat(r[1]);
	}else if(navigator.appName=="Netscape"){
		var re_netscape_version = /^Mozilla\/(\d\.?\d*)/i;
		r=ua.match(re_netscape_version);
		this.netscape=true;
		this.version = parseFloat(r[1]);
	}
	this.Platform = ua.match(/windows/i)?"windows":(ua.match(/linux/i)?"linux":(ua.match(/mac/i)?"mac":ua.match(/unix/i)?"unix":"unknown"));
	this.v=this.version;
	this.valid = this.ie && this.v>=6 || this.mozilla && this.v>=1.4;
}

function getElement(elId, tagName) {
	if (document.getElementById) {
		return document.getElementById(elId);
	} else {
		if (document.all) {
			return document.all[elId];
		} else {
			return nav4GetLayerById(elId, tagName);
		}
	}
}

is = new BrowserCheck();
if (is.mozilla) {
	obj_doc_htmlel_proto = document.createElement("P").__proto__.__proto__; //HTMLElement prototype
	obj_doc_htmlel_proto.__defineGetter__("outerHTML", function () {
		var attr, attrs = this.attributes;
		var str = "<" + this.tagName;
		for (var i = 0; i < attrs.length; i++) {
			attr = attrs[i];
			if (attr.specified)
				str += " " + attr.name + '="' + attr.value + '"';
		}
		if (!this.canHaveChildren)
			return str + ">";
		
		return str + ">" + this.innerHTML + "</" + this.tagName + ">";
	});
}

