var allDIVs = document.all.tags("div")
var xPositions = new Array(0,4,12,18,24);
var yPositions = 0;
var previousObj = "";
var previousFamGen = "";
var groupHeight = new Array();
var htmlStr ="";
var cssStr ="<style type='text/css'>";
// this is where the character-setting for each language is set
// the variables is with and without children menuelements
// the syntax is (level 1, level 2, level 3, level 4)
// a bit of testing is needed to get this correct
if (language == "null") {
	var chrPrLineWithout = new Array(28,23,19,19);
	var chrPrLineWith = new Array(22,20,18,18);
} else if (language == "chinese") {
	var chrPrLineWithout = new Array(12,9,9,9);
	var chrPrLineWith = new Array(12,9,9,9);
} else if (language == "japanese") {
	var chrPrLineWithout = new Array(12,9,9,9);
	var chrPrLineWith = new Array(12,9,9,9);		
}
function replace(inString,oldText,newText) {
	return (inString.split(oldText).join(newText));
}
var activeObj = new Array(); 
activeObj[1] = null; 
activeObj[2] = null; 
activeObj[3] = null; 
activeObj[4] = null;
/*-------------------------------------*/
/* write CSS and the DIVs */
function MI(id,lyrID,content,url,target,children) {
	this.notesID = id.toUpperCase();
	this.lyrID = lyrID;
	this.contentdisplay = content;
	this.content = replace(content, "&nbsp;", "");
	this.url = url;
	this.target = target;
	this.children = children;
	this.objPos = lyrID.split("x");
	this.level = this.objPos.length-2;
	this.famGen = this.lyrID.substring(0,this.lyrID.lastIndexOf("x"));
	this.offClass = "leftmenuOff";
	this.onClass = "branch"+activeBranch+"col02";
	this.hClass = "branch"+activeBranch+"col01";
	switch (this.level) {
		case 1:
			this.x = xPositions[1];
			this.y = yPositions;
			if (this.children) { this.h = Math.round((this.content.length/chrPrLineWith[0])+0.49)*18; } else { this.h = 
Math.round((this.content.length/chrPrLineWithout[0])+0.49)*18; }
			this.w = 150;
			break;
		case 2:
			this.L1parent = "x"+this.objPos[1]+"x"+this.objPos[2];
			this.L1parentY = eval(this.L1parent+".y");
			this.x = xPositions[2];
			if (this.famGen == previousFamGen) { this.y = yPositions; } else { this.y = this.L1parentY+18; yPositions = this.y; }
			if (this.children) { this.h = Math.round((this.content.length/chrPrLineWith[1])+0.49)*18; } else { this.h = 
Math.round((this.content.length/chrPrLineWithout[1])+0.49)*18; }
			this.w = 120;
			break;
		case 3:
			this.L1parent = "x"+this.objPos[1]+"x"+this.objPos[2];
			this.L2parent = "x"+this.objPos[1]+"x"+this.objPos[2]+"x"+this.objPos[3];
			this.L2parentY = eval(this.L2parent+".y");
			this.x = xPositions[3];
			if (this.famGen == previousFamGen) { this.y = yPositions; } else { this.y = this.L2parentY+18; yPositions = this.y; }
			if (this.children) { this.h = Math.round((this.content.length/chrPrLineWith[2])+0.49)*18; } else { this.h = 
Math.round((this.content.length/chrPrLineWithout[2])+0.49)*18; }
			this.w = 120;
			break;
		case 4:
			this.L1parent = "x"+this.objPos[1]+"x"+this.objPos[2];
			this.L2parent = "x"+this.objPos[1]+"x"+this.objPos[2]+"x"+this.objPos[3];
			this.L3parent = "x"+this.objPos[1]+"x"+this.objPos[2]+"x"+this.objPos[3]+"x"+this.objPos[4];
			this.L3parentY = eval(this.L3parent+".y");
			this.x = xPositions[4];
			if (this.famGen == previousFamGen) { this.y = yPositions; } else { this.y = this.L3parentY+18; yPositions = this.y; }
			this.h = Math.round((this.content.length/chrPrLineWith[3])+0.49)*18;
			this.w = 120;
			break;
		default:
			break;	
	}
	if (this.famGen == previousFamGen) { groupHeight[groupHeight.length-1] += this.h+0; } else if (this.level==1) 
{groupHeight[groupHeight.length] = this.h;} else {groupHeight[groupHeight.length] = this.h+1}
	if (this.objPos[this.objPos.length-1] == 0) { this.groupsClass = this.hClass; this.type = "header"; } else { this.groupsClass = 
"leftmenuOff"; this.type = "menuitem"; }
	if (this.type == "header") {
		if (this.lyrID == "x1x0"){
			var tempStr = "" + this.contentdisplay; this.contentdisplay = tempStr; this.x -= 0; this.w += 0;
		}
		else{
			var tempStr = "<img src='"+closeBox+"' width='10' height='10' border='0' align='right' vspace='2' hspace='5'>"; tempStr 
+= this.contentdisplay; this.contentdisplay = tempStr; this.x -= 1; this.w += 2;
		}
	}
	//alert (arrowOpen);
	if (this.children) { this.contentdisplay += " <img src='"+arrowOpen+"' width='6' height='6' border='0'>"; }
	writeCSS(this.lyrID,this.contentdisplay,this.x,this.y,this.w,this.h,this.level,this.groupsClass);
	yPositions += this.h+0;
	previousObj = this.lyrID;
	previousFamGen = this.famGen;
}
function writeCSS (id,content,xPos,yPos,width,height,level,groupsClass) {
	this.css = "#" + id + " {left:"+xPos+"px; top: " + yPos + "px; width:" + (width) + "px; height:" + height + "px; padding: 2px 0px 0px 3px; clip: rect(0 "+width + " "+height+" 0);";
	if (level>1){	this.css += "visibility: hidden;";}
	this.css += "}\n";
	this.tag = "<div id='"+id+"' class='"+groupsClass+"'>"+content+"</div>";
	htmlStr += this.tag;
	cssStr += this.css;
}
function buildMenu() {
	cssStr += "</style>";
	document.write(cssStr);
	document.write(htmlStr);
}
/*---------------------------------------------------------------*/
/* Initialize the DIVs before getting and setting the right menuitem */
function init() {
	var x = 0;
	for (var i=0; i<allDIVs.length; i++){
		if (allDIVs[i].id.lastIndexOf("x0") != -1) {
			allDIVs[i].style.height = groupHeight[x];
			allDIVs[i].style.clip = "rect(0,150,"+groupHeight[x]+",0)";
			x++;
		}
		var obj = eval(allDIVs[i].id).notesID;
		obj = new XOobj(allDIVs[i],allDIVs[i].id);
	}
	getParams();
}
function getParams(){
	var url = ""+ document.location;
	var urlArgs = url.split("&");
	if(urlArgs.length > 1){
		var arg = urlArgs[1].split("=");
		if(arg[0] == "unid") { var obj2show = arg[1].toUpperCase(); }
		setMenu(obj2show);
	}
	if(urlArgs.length > 2){
		var arg = urlArgs[2].split("=");
		if(arg[0] == "mainurl") { parent.main.location.replace(arg[1]); }
	}
}
function setMenu(obj2show) {
	for (i=0; i<(allDIVs.length); i++){
		var obj = eval(allDIVs[i].id);
	  if (obj.notesID == obj2show){
			switch (obj.level) {
			case 1:
				allDIVs[obj.lyrID].className = obj.onClass;
				activeObj[1] = eval(allDIVs[obj.lyrID]);
				if(obj.children){
					for (j=0; j<(allDIVs.length); j++){
						var barn = eval(allDIVs[j].id);
						var layerName = obj.lyrID+"x";
						if (barn.level == 2 && allDIVs[j].id.indexOf(layerName) == 0) {
							allDIVs[j].style.visibility = 'visible';
						}
					}
				}
				break;
			case 2:
				for (j=0; j<(allDIVs.length); j++){
					var layerID = allDIVs[j].id.split("x");
					var layerLevel = layerID.length-2;
					var layerName = obj.L1parent+"x";
					if (obj.level == layerLevel && allDIVs[j].id.indexOf(layerName) == 0) {
						allDIVs[j].style.visibility = 'visible';
					}
					if(obj.children){
						var barn = eval(allDIVs[j].id);
						var layerName = obj.lyrID+"x";
						if (barn.level == 3 && allDIVs[j].id.indexOf(layerName) == 0) {
							allDIVs[j].style.visibility = 'visible';
						}
					}
				}
				allDIVs[obj.lyrID].className = obj.onClass;
				allDIVs[obj.L1parent].className = obj.onClass;
				activeObj[1] = eval(allDIVs[obj.L1parent]);
				activeObj[2] = eval(allDIVs[obj.lyrID]);
				break;
			case 3:
				for (j=0; j<(allDIVs.length); j++){
					var layerID = allDIVs[j].id.split("x");
					var layerLevel = layerID.length-2;
					var layerName = obj.L1parent+"x";
					if (obj.level == layerLevel+1 && allDIVs[j].id.indexOf(layerName) == 0) {
						allDIVs[j].style.visibility = 'visible';
					}
				}
				for (j=0; j<(allDIVs.length); j++){
					var layerID = allDIVs[j].id.split("x");
					var layerLevel = layerID.length-2;
					var layerName = obj.L2parent+"x";
					if (obj.level == layerLevel && allDIVs[j].id.indexOf(layerName) == 0) {
						allDIVs[j].style.visibility = 'visible';
					}
					if(obj.children){
						var barn = eval(allDIVs[j].id);
						var layerName = obj.lyrID+"x";
						if (barn.level == 4 && allDIVs[j].id.indexOf(layerName) == 0) {
							allDIVs[j].style.visibility = 'visible';
						}
					}
				}
				allDIVs[obj.lyrID].className = obj.onClass;
				allDIVs[obj.L1parent].className = obj.onClass;
				allDIVs[obj.L2parent].className = obj.onClass;
				activeObj[1] = eval(allDIVs[obj.L1parent]);
				activeObj[2] = eval(allDIVs[obj.L2parent]);
				activeObj[3] = eval(allDIVs[obj.lyrID]);
				break;
			case 4:
				for (j=0; j<(allDIVs.length); j++){
					var layerID = allDIVs[j].id.split("x");
					var layerLevel = layerID.length-2;
					var layerName = obj.L1parent+"x";
					if (obj.level == layerLevel+2 && allDIVs[j].id.indexOf(layerName) == 0) {
						allDIVs[j].style.visibility = 'visible';
					}
				}
				for (j=0; j<(allDIVs.length); j++){
					var layerID = allDIVs[j].id.split("x");
					var layerLevel = layerID.length-2;
					var layerName = obj.L2parent+"x";
					if (obj.level == layerLevel+1 && allDIVs[j].id.indexOf(layerName) == 0) {
						allDIVs[j].style.visibility = 'visible';
					}
				}
				for (j=0; j<(allDIVs.length); j++){
					var layerID = allDIVs[j].id.split("x");
					var layerLevel = layerID.length-2;
					var layerName = obj.L3parent+"x";
					if (obj.level == layerLevel && allDIVs[j].id.indexOf(layerName) == 0) {
						allDIVs[j].style.visibility = 'visible';
					}
				}
				allDIVs[obj.lyrID].className = obj.hClass;
				allDIVs[obj.L1parent].className = obj.onClass;
				allDIVs[obj.L2parent].className = obj.onClass;
				allDIVs[obj.L3parent].className = obj.onClass;
				activeObj[1] = eval(allDIVs[obj.L1parent]);
				activeObj[2] = eval(allDIVs[obj.L2parent]);
				activeObj[3] = eval(allDIVs[obj.L3parent]);
				activeObj[4] = eval(allDIVs[obj.lyrID]);
				break;
			default:
				break;
			}
			break;
		}
	}
}
/*------------------------------------------------------------------------------------------------------------------------------*/
/* the XO object constructor */
function XOobj(obj,lyrID) {
	this.obj = this.event = obj;
	this.obj.css = obj.style;
	/* find the properties from the MI-object */
	this.id = eval(lyrID);
	this.obj.lyrID = lyrID;
	this.obj.url = this.id.url;
	this.obj.target = this.id.target;
	this.obj.level = this.id.level;
	this.obj.type = this.id.type;
	this.obj.groupsClass = this.id.groupsClass;
	this.obj.offClass = this.id.offClass;
	this.obj.onClass = this.id.onClass;
	/* capture some desired events */
	this.obj.onmouseover = this.focused;
	this.obj.onmouseout = this.blured;
	this.obj.onmouseup = this.clicked;
}
XOobj.prototype.focused=function() {
	this.css.cursor = "hand";
	if (this.type != "header") { this.className = this.onClass; }
}
XOobj.prototype.blured=function() {
	if (activeObj[this.level] != this && this.type != "header") {	this.className = this.offClass; }
}
XOobj.prototype.clicked=function() {
	switch (this.type) {
		case "header":
			if (activeObj[this.level] != this && activeObj[this.level] != null) { 
				activeObj[this.level].className = this.offClass; 
				activeObj[this.level] = null; }
			for (var i=0; i<(allDIVs.length); i++){
				var layerID = allDIVs[i].id.split("x");
				var layerLevel = layerID.length-2;
				var layerName = this.lyrID+"x";
				
				if (this.level <= layerLevel && layerLevel != 1) { allDIVs[i].style.visibility = "hidden"; }
			}
			
			/* added by Tanveer to make the header clickable */
	                                /******************************************************************/
			if (this.url) {
				if(parent.frames[this.target]){ parent.frames[this.target].document.location = this.url;
				} else if(this.target == 'main') {	parent.document.location = this.url;
				} else if(this.target == '_top') {	parent.parent.document.location = this.url;
				} else {
					if(this.url.indexOf(",") > 1) { 
						eval("window.open(" + this.url + ")");
					} else { 
						window.open(this.url);
					}
				}
			}
                                                /******************************************************************/
		break;
		case "menuitem":
			if (activeObj[this.level] != this && activeObj[this.level] != null) {
				activeObj[this.level].className = this.offClass;
			}
			activeObj[this.level] = this;
			for (var i=0; i<(allDIVs.length); i++){
				var layerID = allDIVs[i].id.split("x");
				var layerLevel = layerID.length-2;
				var layerName = this.lyrID+"x";
				
				if (this.level < layerLevel) { allDIVs[i].style.visibility = "hidden"; }
				if (this.level == layerLevel-1 && allDIVs[i].id.indexOf(layerName) == 0) { allDIVs[i].style.visibility = "visible"; }
			}
			if (this.url) {
				if(parent.frames[this.target]){ parent.frames[this.target].document.location = this.url;
				
				} else if(this.target == 'main') {	parent.document.location = this.url;
				
				} else if(this.target == '_top') {	parent.parent.document.location = this.url;
				
				} else {
					if(this.url.indexOf(",") > 1) { eval("window.open(" + this.url + ")");
					} else { window.open(this.url);}
				}
			}
			break;
		default:
			break;	
	}
	for (var i=(this.level+1); i<5; i++){
		if (activeObj[i] != null) {
			activeObj[i].className = this.offClass;
			activeObj[i] = null;
		}
	}
}
