// *** JSF MenuTree ver.1.02
// *** (c) twojtasiak@poczta.fm
// *** 2001.06.29
// *** GNU GPL distribution

// -> struktura nawigacyjna serwisu

function JSFMenuTree(code,name,href,parent,size){
	this.code=code
	this.name =  name;
	this.href = href;
	this.parent = parent;
	this.size = size;
	this.items = new Array();
}


JSFMenuTree.prototype.addItem = JSFMenuTreeAddItem;
JSFMenuTree.prototype.findItem = JSFMenuTreeFindItem;
JSFMenuTree.prototype.findParent = JSFMenuTreeFindParentItem;
JSFMenuTree.prototype.getPath = JSFMenuTreeGetPath;


function JSFMenuTreeAddItem(code,name,href,parent,size){
	if(arguments.length==3){
		var pos = (this.items.length==0)?1:this.items.length;
		this.items[pos] = new JSFMenuTree(code,name, href, this);
	}
	else {
		objsearch=_jsfgetsearchobject(parent,this)
		var pos = (objsearch.items.length==0)?1: objsearch.items.length;
		objsearch.items[pos] = new JSFMenuTree(code,name, href, parent,size);
	}
}

function JSFMenuTreeFindItem(objCode) {
	return _jsfgetsearchobject(objCode,this);
}

function JSFMenuTreeFindParentItem(objCode) {
	return _jsfgetparentobject(objCode,this);
}

function JSFMenuTreeGetPath(objCode) {
	path = new Array()
	_jsfgetpath(objCode,this)
	return path.reverse();
}

function _jsfgetsearchobject(objCode,obj) {
	var inTreeobj=null;
	if (obj.code==objCode) return obj 
	else{
 		 for (var i=1; i<obj.items.length; i++){
	 				 inTreeobj=_jsfgetsearchobject(objCode,obj.items[i])
					 if (inTreeobj){	return inTreeobj;}
			 }
		 }
	return null
}

function _jsfgetparentobject(objCode,obj) {
	for ( var i=1; i< obj.items.length; i++) if (objCode==obj.items[i].code) return obj
	for ( var i=1; i< obj.items.length; i++){
			inTreeobj=_jsfgetparentobject(objCode,obj.items[i]);
			if (inTreeobj) return inTreeobj
	}
	return null
}	

function  _jsfgetpath(objCode,obj) {
	var inTreeobj=null;
	if (obj.code==objCode)	{
		return obj
	}
	else{
 		 for (var i=1; i<obj.items.length; i++){
	 			 inTreeobj=_jsfgetpath(objCode,obj.items[i])
				 if (inTreeobj){	
					 path[path.length]=i;
					 return inTreeobj;
				 }
			 }
		 }
	return null
}
