/*
	Copyright (c) 2006-2007 Daniel Rehn
*/

var common_storage = new Array();

function printMenu(menuitem, depth, parent, parentTree) {
	if(common_storage[parent]) {
		common_storage[parent] = {icon:common_storage[parent].icon, size:menuitem.length};
	} else {
		common_storage[parent] = {size:menuitem.length};
	}
	for(var i=0; i<menuitem.length; i++) {
		document.write("<div id=\""+parent+"\"");
		
		if(menuPrefs.stepIndividualStyles == true) {
			document.write(" class=\"menuItem_"+depth+"\"");
		} else {
			document.write(" class=\"menuItem\"");
		}
		
		document.write(" onMouseOver=\"this.className='");
		if(menuPrefs.stepIndividualStyles == true) {
			document.write("menuItem_"+depth+"_Hover");
		} else {
			document.write("menuItem_Hover");
		}
		document.write("';\"");
		
		
		document.write(" onMouseOut=\"this.className='");
		if(menuPrefs.stepIndividualStyles == true) {
			document.write("menuItem_"+depth);
		} else {
			document.write("menuItem");
		}
		document.write("';\"");
		
		
		document.write(" onClick=\"");
		
		if(menuitem[i].sub) {
			if(menuitem[i].locked != true) {
				if(menuitem[i].iconOpen) {
					document.write("toggleMenu('"+parent+"','"+parent+"_"+i+"','"+menuitem[i].icon+"','"+menuitem[i].iconOpen+"');");
				} else {
					document.write("toggleMenu('"+parent+"','"+parent+"_"+i+"','"+menuitem[i].icon+"');");
				}
			}
		}
		
		if(menuitem[i].url && menuitem[i].url != "") {
			document.write("navigate('"+menuitem[i].url+"'");
																					 
			if(menuitem[i].target && menuitem[i].target != "") {
				document.write(", '"+menuitem[i].target+"');");
			} else {
				document.write(", '"+menuPrefs.frame+"');");
			}
		}
		
		document.write("\"");
		
		if(menuPrefs.showRoot == true) {
			for(var d=0; d<depth; d++) {
				if(d == (depth-1)) {
					if(i == (menuitem.length-1)) {
						document.write("><img src=\""+menuPrefs.imgPath+"rootc.gif"+"\" class=\"menuIcon\"");
					} else {
						if(menuitem[i].title == "-" && !menuitem[i].icon)
							document.write("><img src=\""+menuPrefs.imgPath+"rootd.gif"+"\" class=\"menuIcon\"");
						else 
							document.write("><img src=\""+menuPrefs.imgPath+"roott.gif"+"\" class=\"menuIcon\"");
					}
				} else {
					if(parentTree[d] == 1) {
						document.write("><img src=\""+menuPrefs.imgPath+"rootd.gif"+"\" class=\"menuIcon\"");
					} else {
						document.write("><img src=\""+menuPrefs.imgPath+"empty.gif"+"\" class=\"menuIcon\"");
					}
				}
			}
		} else {
			document.write(" style=\"padding-left: "+(depth*menuPrefs.depthSize)+"px;\"");
		}
		
		document.write(">");
		
		if(menuitem[i].icon) {
			document.write("<img id=\"img_"+parent+"_"+i+"\" src=\""+menuPrefs.imgPath+menuitem[i].icon+"\" class=\"menuIcon\"> ");
			common_storage[parent+"_"+i] = {icon:menuitem[i].icon};
		}
		
		if(menuitem[i].style && menuitem[i].style != "") {
			document.write("<span class=\""+menuitem[i].style+"\">");
		}
		
		if(menuitem[i].title != "-" || menuitem[i].icon) {
			document.write(menuitem[i].title);
		}
		
		if(menuitem[i].styles && menuitem[i].style != "") {
			document.write("</span>");
		}
		
		document.write("<br></div>");
		
		if(menuitem[i].sub) {
			document.write("<div id=\""+parent+"_"+i+"\"");
			if(menuitem[i].locked != true && menuitem[i].opened != true) {
				document.write("style=\"visibility: hidden; display: none;\"");
			}
			document.write(">");
			
			if(i == (menuitem.length-1)) { parentTree[depth-1] = 0; } else { parentTree[depth-1] = 1; }
			printMenu(menuitem[i].sub, depth+1, (parent+"_"+i), parentTree);
			document.write("</div>");
		}
	}
	return;
}


function toggleMenu(pid, id, img, imgOpen) {
	var obj = document.getElementById(id);
	var obj2 = document.getElementById("img_" + id);
	
	if(obj) {
		if(obj.style.visibility == 'hidden') {
			
			if(menuPrefs.singleOpenPerDepth == true) {
				var obj3, objImg;
				for(var i=0; i<common_storage[pid].size; i++) {
					obj3 = document.getElementById(pid + "_" + i);
					if(obj3) {
						obj3.style.visibility = 'hidden';
						obj3.style.display = 'none';
					}
					objImg = document.getElementById("img_" + pid + "_" + i);
					if(objImg) {
						objImg.src = menuPrefs.imgPath + common_storage[pid + "_" + i].icon;
					}
				}
			}
			
			obj.style.visibility = 'visible';
			obj.style.display = 'block';
			if(obj2 && imgOpen != null) {
				obj2.src = menuPrefs.imgPath + imgOpen;
			}
		} else {
			obj.style.visibility = 'hidden';
			obj.style.display = 'none';
			if(obj2) {
				obj2.src = menuPrefs.imgPath+img;
			}
		}
	}
	
}


function initMenu() {
	printMenu(menu,0, "0", []);
}

function navigate(url, target) {
	void(window.open(url,target));
}


function closeDepth(parentID, curMenu) {
	var size = curMenu.length;
	
	for(i=0; i< size; i++) {
		var obj = document.getElementById(parentID + "_" + i);
		if(obj) {
			obj.style.visibility = 'hidden';
			obj.style.display = 'none';
		}
		objImg = document.getElementById("img_" + parentID + "_" + i);
		if(objImg) {
			objImg.src = menuPrefs.imgPath + common_storage[parentID + "_" + i].icon;
		}
	}
}


function openItem(id, mnu) {
	if(id.length <= 1) return;
	
	if(mnu.iconOpen) {
		icon = mnu.iconOpen;
	} else {
		icon = mnu.icon;
	}
	
	var obj = document.getElementById(id);
	if(obj) {
		obj.style.visibility = 'visible';
		obj.style.display = 'block';
	}
	objImg = document.getElementById("img_" + id);
	if(objImg) {
		objImg.src = menuPrefs.imgPath + icon;
	}
}


function openMenu(id) {
	var strID = id;
	var curID = "";
	
	var men = menu;
	
	var fix = 0;
	
	while(curID.length < id.length) {
		var pos = strID.indexOf("_");
		var val = -1;
		
		if(pos == -1) {
			if(curID.length > 0) {
				curID += "_";
			}
			val = strID.substr(0, strID.length);
			curID += val;
			strID = "";
		} else {
			if(curID.length > 0) {
				curID += "_";
			}
			val = strID.substr(0, pos);
			curID += val;
			strID = strID.substr(pos+1, strID.length);
		}
		
		closeDepth(curID, men);
		
		
		if(fix > 0) {
			if(men[val]) {
				men = men[val];
			} else if(men.sub[val]) {
				men = men.sub[val];
			}
		}
		
		openItem(curID, men);
		
		fix++;
		if(fix > 9999) break;
	}
	
	
}

