
//var menusLevels = ExClMenuLevel();
var tmpcellidentified = 34;
function getNextCellID(){
	var tmpnum1 = tmpcellidentified;
	var tmpnum = tmpcellidentified;
	tmpnum = tmpnum + 1;
	tmpnum++;
	tmpcellidentified = tmpnum;
	while(tmpnum == tmpcellidentified){
		tmpcellidentified++;
	}
	return tmpcellidentified;
}

function ExClMenuItem(name, url, parent, topMenuVarName){
	this.name = name;
	this.url = url;
	this.topMenuVarName = topMenuVarName;
	this.cellID = getNextCellID();
	
	if(parent.menuItem && parent.menuItem.cellID){
		this.parentCellID = parent.menuItem.cellID;
	} else {
		this.parentCellID = parent;
	}
	this.parent = parent;
	this.link = "<a href=\""+url+"\" alt=\""+name+"\" title=\""+name+"\">"+name+"</a>";
}


//dmenuLevel must be an array
function ExClMenuLevel(dmenuItem){
	this.menuItem = dmenuItem;
	this.menuLevel = new Array();
	this.expanded = false;
	this.hasChildren = exclHasChildren;
	this.addMenuLevel = exclAddMenuLevel;
	this.expandMenu = exclExpandMenu;
	this.collapseMenu = exclCollapseMenu;
	this.buildExClMenu = exclBuildExClMenu;
}


//recursive search
function getExClMenuByUrl(menusLevelspassed, url){
	//returns the MenuLevel with the url value returns false on failure.
	if(menusLevelspassed.menuItem && menusLevelspassed.menuItem.url == url){
		return menusLevelspassed;
	}
	
	//for each menu at menus level
	if(menusLevelspassed.menuItem && menusLevelspassed.hasChildren()){
	
		var i = 0;

		for(i = 0; i < menusLevelspassed.menuLevel.length; i++){
			var tmpmenuslevel = getExClMenuByUrl(menusLevelspassed.menuLevel[i], url);
			
			if(tmpmenuslevel.menuItem && tmpmenuslevel.menuItem.url == url){
				return tmpmenuslevel;
			} 
		}
	}

	return false;
}
//recursive search
function getExClMenuParentByChildUrl(menusLevelspassed, childUrl){
	
	
	//for each menu at menus level
	if(menusLevelspassed.menuItem && menusLevelspassed.hasChildren()){
		//search has children
		var i = 0;
		for(i = 0; i < menusLevelspassed.menuLevel.length; i++){
			//var tmpmenuslevel = getExClMenuParentByChildUrl(menusLevelspassed.menuLevel[i], childUrl);
		
			if(menusLevelspassed.menuLevel[i].menuItem && menusLevelspassed.menuLevel[i].menuItem.url == childUrl){
				return menusLevelspassed;
			} 
		}
		for(i = 0; i < menusLevelspassed.menuLevel.length; i++){
			var tmpmenuslevel = getExClMenuParentByChildUrl(menusLevelspassed.menuLevel[i], childUrl);
			
			if(tmpmenuslevel != false){
				return tmpmenuslevel;
			}
		}
	}

	return false;
}

function exclHasChildren() {
    if(this.menuLevel && this.menuLevel.length > 0){
		return true;
	} else {
		return false;
	}
}

function exclAddMenuLevel(newMenuLevel) {
    this.menuLevel[this.menuLevel.length] = newMenuLevel;
}

function exclExpandMenu() {
    this.expanded = true;
	var toppointer = this.menuItem.parent;
	var prevpointer = this;
	while(toppointer.menuItem && toppointer.menuItem.url && toppointer.menuItem.parent){
		prevpointer = toppointer;
		toppointer = toppointer.menuItem.parent;
	}
	//alert(prevpointer.menuItem.url);
	prevpointer.buildExClMenu();
}

function exclCollapseMenu() {
    this.expanded = false;
	var toppointer = this.menuItem.parent;
	var prevpointer = this;
	while(toppointer.menuItem && toppointer.menuItem.url && toppointer.menuItem.parent){
		prevpointer = toppointer;
		toppointer = toppointer.menuItem.parent;
	}
	prevpointer.buildExClMenu();
}

function exclBuildExClMenu() {
	//show menuitem
	var cellID = this.menuItem.parentCellID;
	var tmphtml = "";
	var parentcellid = ""+this.menuItem.parentCellID;
	if(this.menuItem.parentCellID != "startcell" && this.menuItem.parentCellID != "startcell2" && parentcellid.substr(0, 7) != "2colrow"){
		var tmphtml = document.getElementById(""+this.menuItem.parentCellID).innerHTML;
	}
	//alert("build");
	tmphtml = tmphtml+"<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" class=\"cms_inner_exclmenu\"><tr><td width=\"30\">&nbsp;&nbsp;&nbsp;&nbsp;</td><td id=\""+this.menuItem.cellID+"\" class=\"bodytext1\" width=\"100%\">"+this.menuItem.link;


	if(this.hasChildren()){
		//add the img and close table
		var i = 0;
		if(this.expanded){
			//display -
			tmphtml = tmphtml+" <a href=\"javascript:getExClMenuByUrl("+this.menuItem.topMenuVarName+", '"+this.menuItem.url+"').collapseMenu();\"><img src=\"/modules/images/menu_minus.gif\" border=\"0\" style=\"vertical-align:bottom;\"></a><br/></td></tr></table>";
		} else {
			//display +
			tmphtml = tmphtml+"  <a href=\"javascript:getExClMenuByUrl("+this.menuItem.topMenuVarName+", '"+this.menuItem.url+"').expandMenu();\"><img src=\"/modules/images/menu_plus.gif\" border=\"0\" style=\"vertical-align:bottom;\"></a><br/></td></tr></table>";
		}
		document.getElementById(""+cellID).innerHTML = tmphtml;

	} else {
		//no image just close table
		tmphtml = tmphtml+"</td></tr></table>";
		document.getElementById(""+cellID).innerHTML = tmphtml;
		
	}
	if(this.hasChildren() && this.expanded){
		//alert("has children"+this.menuLevel.length);
		for(i = 0; i < this.menuLevel.length; i++){
			//alert("go expand"+this.menuLevel[i].menuItem.url);
			this.menuLevel[i].buildExClMenu();
		}
	}

}

