function CPTreeItem(txt, url, target, fontname, fontsize, forecolor) {
	this.linkurl = url;
	this.linktxt = txt;
	this.linkTarget = target;
	this.linkfontname = fontname;
	this.linkfontsize = fontsize;
	this.linkforecolor = forecolor;
	this.renderHTML = function() {
		document.writeln('&nbsp;&nbsp;&nbsp;<a href=\'' + url + '\');');
		if (this.linkTarget.length > 0) {
			document.writeln(' target=\'' + this.linkTarget + '\'');
		}
		document.writeln('style="font-family:'+this.linkfontname+';font-size:'+this.linkfontsize+';color:'+this.linkforecolor+';">' + txt + '</a><br>');
	}
}

function CPTreeHeader(parent, txt, url, urlover, link, target, bimg) {
	this.tree = parent;
	this.menuItems = new Array();
	this.linkurl = url;
	this.linkurlover = urlover;
	this.linktxt = txt;
	this.id = parent.curlevel;
	this.state = 0;
	this.linkTarget = target;
	this.imgLink = link;
	this.isImage = bimg;

	this.loadItem = function(targetframe, itemnumber) {
		if (this.menuItems && this.menuItems.length > itemnumber && this.menuItems[itemnumber].linkurl)
		{
			targetframe.location.href = this.menuItems[itemnumber].linkurl;
		}
		else
		{
			alert('The menu control could not load the desired page.\nPlease select a link manually from the menu.');
		}
		
	}
	
	this.renderHTML = function() {
		var imgUrl = this.linkurl;
		var imgUrlOver = this.linkurlover;
		if (this.menuItems.length > 0 || this.imgLink) {
			if (this.linkurl.length == 0 || this.isImage && !this.imgLink) {
				this.linkurl = 'javascript:void(0);';
			}
			document.writeln('<div id=\'mh' + this.id + '\' onClick=\'' + this.tree.page + '.expand(' + this.id + ');\' ');
			document.writeln(' onDblClick=\'' + this.tree.page + '.expandAll();\'>');
			if(this.imgLink){
				document.writeln('<a href=\'' + this.imgLink + '\'');
			}else{
				document.writeln('<a href=\'' + this.linkurl + '\'');
			}
			if (this.linkTarget.length > 0) {
				document.writeln(' target=\'' + this.linkTarget + '\'');
			}
			document.writeln('>')
			if (this.isImage == false) {
				document.writeln(this.linktxt + '</a></div>');
			} else {
				if(imgUrlOver.length == 0){
					document.writeln('<img src=\'' + imgUrl + '\' border=0></a></div>');
				}else{
					document.writeln('<img src=\'' + imgUrl + '\' onmouseover=\'' + this.tree.page + '.shiftImage(this,"' + imgUrlOver + '");\' onmouseout=\'' + this.tree.page + '.shiftImage(this,"' + imgUrl + '");\' border=0></a></div>');
				}
			}
			document.writeln('<div id=\'mi' + this.id + '\' style=\'display:None\'>');
			for (xi = 0; xi < this.menuItems.length; xi++) {
				this.menuItems[xi].renderHTML();
			}
			document.writeln('</div>');
		}
	}

	this.addEntry = function(txt,url,target,fontname,fontsize,forecolor) { 
		this.menuItems[this.menuItems.length] = new CPTreeItem(txt,url,target,fontname,fontsize,forecolor); 
	}

	this.expand = function() {
		if (this.state == 0) {
			document.getElementById('mi' + this.id).style.display='';
			this.state = 1;
		} else {
			document.getElementById('mi' + this.id).style.display='none';
			this.state = 0;
		}
	}

	this.expandAll = function(b) {
		if (b == true) {
			document.getElementById('mi' + this.id).style.display='';
			this.state = 1;
		} else {
			document.getElementById('mi' + this.id).style.display='none';
			this.state = 0;
		}
	}
}

function CPTree(pageName) {
	this.page = pageName;
	this.curlevel = -1;
	this.headers = new Array();
	this.expanded = false;
	
	this.loadItem = function(targetframe, headernumber, itemnumber) {
		if (this.headers && this.headers.length > headernumber)
		{
			this.headers[headernumber].loadItem(targetframe, itemnumber);
		}
		else
		{
			alert('The menu control could not load the desired page.\nPlease select a link manually from the menu.');
		}
	}

	this.addMenuHeader = function(txt) { 
		this.curlevel++;
		this.headers[this.headers.length] = new CPTreeHeader(this,txt,'','','','',false); 
	}

	this.addLinkHeader = function(txt,url,target) { 
		this.curlevel++;
		this.headers[this.headers.length] = new CPTreeHeader(this,txt,url,'',target,'',false); 
	}

	this.addImgHeader = function(txt,url,urlover,target,link) { 
		this.curlevel++;
		this.headers[this.headers.length] = new CPTreeHeader(this,txt,url,urlover,link,target,true); 
	}

	this.addMenuItem = function(itemTxt, itemUrl, target, fontname, fontsize, forecolor) {
		this.headers[this.curlevel].addEntry(itemTxt,itemUrl,target,fontname,fontsize,forecolor);
	}

	this.showTree = function() {
		for (i = 0; i < this.headers.length; i++) {
			this.headers[i].renderHTML();
		}
	}

	this.expand = function(l) {
		this.headers[l].expand();
	}

	this.expandAll = function() {
		if (this.expanded == true) {
			this.expanded = false;
		} else {
			this.expanded = true;
		}

		for (i = 0; i < this.headers.length; i++) {
			this.headers[i].expandAll(this.expanded);
		}
	}
	
	this.shiftImage = function(obj, img){
		obj.src = img;
	}
}


