function gid(obj){
	return document.getElementById(obj);
}

function checkNextDepth(index, Links){
	return (index+1<Links.length)?Links[index+1].Depth:1;
}

function checkPrevDepth(index, Links){
	return (index>0)?Links[index-1].Depth:0;
}

function isLastNode(index, Links){
	for(var i=index+1; i<Links.length; i++){
		if (Links[i].Depth==Links[index].Depth){
			return false;
		} else if (Links[i].Depth<Links[index].Depth) {
			return true;
		}
	}

	return true;
}

function DrawLinks(Links){
	var out   = '<table border="0" cellspacing="0" cellpadding="0" width="100%">';
	var icons = '';
	var len   = 0;

	tLinks      = Links;

	for (var i=0; i<tLinks.length; i++){
		if (checkPrevDepth(i, tLinks)!=0 && checkPrevDepth(i, tLinks)<tLinks[i].Depth){
			icons = icons.substr(0, icons.length-1);
			icons += isLastNode(i-1, tLinks)?' ':'|';
		}

		if (checkNextDepth(i, tLinks)>tLinks[i].Depth){
			if(tLinks[i].Expand){
				icons += isLastNode(i, tLinks)?'_':'-';
			} else {
				icons += isLastNode(i, tLinks)?'=':'+';
			}
		} else  {
			icons += isLastNode(i, tLinks)?'L':'T';
		}

		Depth = icons.length;
		out += '<tr id="c'+tLinks.Name+i+'"><td><span style="width:100%;line-height:'+iconHeight+'px;'+eval('Menu'+(Depth<3?Depth:(Depth%2==1?3:4))+'Style')+'">'+WriteLine(icons, i, tLinks)+'</span>';

		if (checkNextDepth(i, tLinks)>tLinks[i].Depth)
			out += '<div id="'+tLinks.Name+i+'" style="display:'+(tLinks[i].Expand?'':'none')+'"><table border="0" cellspacing="0" cellpadding="0" width="100%">';

		if (icons.charAt(icons.length-1)=='L' || icons.charAt(icons.length-1)=='T')
			icons = icons.substr(0, icons.length-1);

		if (checkNextDepth(i, tLinks)<tLinks[i].Depth){
			icons = icons.substr(0, icons.length-tLinks[i].Depth+checkNextDepth(i, tLinks));

			for (var j=checkNextDepth(i, tLinks); j<tLinks[i].Depth; j++)
				out += '</table></div>';
		}

		out += '</td></tr>';
	}

	out += '</table>';
	return out;
}

function WriteIcons(icons, index, Links){
	var out    = '';
	var prefix = '<img align="left" hspace="0" src="';

	icons = UseTree?icons:icons.replace(/[| LT]/gi,'').replace(/=/,'+').replace(/_/,'-');
	icons = icons==''?' ':icons;
	for(var i=0; i<icons.length; i++){
		switch(icons.charAt(i)){
			case '+':
				out += prefix+PlusImage+'" onclick="Toggle('+index+', '+Links.Name+');" id="p'+Links.Name+index+'">';
				break;
			case '-':
				out += prefix+MinusImage+'" onclick="Toggle('+index+', '+Links.Name+');" id="p'+Links.Name+index+'">';
				break;
			case '|':
				out += prefix+VertImage+'">';
				break;
			case ' ':
				out += prefix+SpacerImage+'" width="'+iconWidth+'" height="'+iconHeight+'">';
				break;
			case 'L':
				out += prefix+LImage+'">';
				break;
			case 'C':
				out += prefix+DefCImage+'">';
				break;
			case 'O':
				out += prefix+DefOImage+'">';
				break;
			case 'T':
				out += prefix+TImage+'">';
				break;
			case '=':
				out += prefix+EndPlusImage+'" onclick="Toggle('+index+', '+Links.Name+');" id="p'+Links.Name+index+'">';
				break;
			case '_':
				out += prefix+EndMinusImage+'" onclick="Toggle('+index+', '+Links.Name+');" id="p'+Links.Name+index+'">';
				break;
		}
	}

	return out;
}

function WriteLine(icons, index, Links){
	var out    = WriteIcons(icons, index, Links);
	var prefix = '<img align="left" hspace="0" src="';

	out += prefix+iconImage+'" id="L'+(Links[index].Index?Links[index].Index:index)+'"><span><nobr> &nbsp; '+(Links[index].Type==2||(Links[index].Type==1&&Links.Name=='aLinks')?'<a href="'+Links[index].Url+'">'+Links[index].Name+'</a>':Links[index].Name)+'</nobr></span>';

	return out;
}

function Toggle(id, Links){
	var nImg    = '';

	var obj          = gid(Links.Name+id).style;
	obj.display      = (obj.display==''?'none':'');
	try{Links[id].Expand = !Links[id].Expand;} catch(err){}

	var src          = gid('p'+Links.Name+id).src

	if (src.indexOf(EndPlusImage)>=0)  nImg = EndMinusImage;
	if (src.indexOf(EndMinusImage)>=0) nImg = EndPlusImage;
	if (src.indexOf(PlusImage)>=0)     nImg = MinusImage;
	if (src.indexOf(MinusImage)>=0)    nImg = PlusImage;

	gid('p'+Links.Name+id).src=nImg;
}