var menuSetArray = new Array();
var menuElArray = new Array();
var delayHideAll;
/*
function openMenuAfterBuild() {
	for (var i=0; i<menuElArray.length; i++){
		
		el = document.getElementById(menuElArray[i]);
	}


}
*/
//var openMenuIdOnLoad;

function buildMenuArray() {
	if(document.getElementById){
		var openMenuIdOnLoad = '';
		
		// build menuSet array 
		var levelLoop = 1;
		do {
			var aEl = Array();
			aEl = getelementsbyclassname('menuSetL' + levelLoop, document.getElementById('mainMenuDiv'));

			for (var i=0; i<aEl.length; i++) {
				menuSetArray[menuSetArray.length] = aEl[i].id;
				//debug_(aEl[i].id);
			}
			levelLoop++;
		} while(aEl.length > 0);
		//END build menuSet array
		
		var levelLoop = 0;
		do {
			var aEl = Array();
			aEl = getelementsbyclassname('menuL' + levelLoop + '_off', document.getElementById('mainMenuDiv'));

			for (var i=0; i<aEl.length; i++) {
				menuElArray[menuElArray.length] = aEl[i].id;
				//find out element to open on load
				if (aEl[i].href != undefined) {
					if (aEl[i].href == window.location) {
						openMenuIdOnLoad = aEl[i].id;
					}
				}
				//END find out element to open on load
			}
			levelLoop++;
		} while(aEl.length > 0);
		if (openMenuIdOnLoad != '') {
			//openMenu(openMenuIdOnLoad);
		}
	}
}

function switchSub(elId) {
	if(document.getElementById){
		this.menuSetId = 'ms' + elId.substr(1);
		menuSetEl = document.getElementById(this.menuSetId);	
		if (menuSetEl.style.display != "block") {
			showSub(elId);
		} else {
			lastMarkPos = this.menuSetId.lastIndexOf('_');
			menuSetIdOneLEvelUp = this.menuSetId.substr(0,(lastMarkPos));
			hideSub(menuSetIdOneLEvelUp);
		}
	}
}

function showSub(elId) {
	if(document.getElementById){
		menuSetId = 'ms' + elId.substr(1);
		// turn on
		menuOn(elId);
		// END turn on

		// HIDE
		hideSub(menuSetId);
		// END HIDE
		
		//turn off
		turnOff(elId);
		// END turn off
		
		//holdOn(elId);
		
		// get last level menu opened in tree structure
		// store menu set id in lastMenuSetOpenedId
		//if menu set don't exist rename to curent menu
		
		if (!inArray_(menuSetArray, menuSetId)) {
			lastMarkPos = menuSetId.lastIndexOf('_');
			lastMenuSetOpenedId = menuSetId.substr(0,(lastMarkPos));
		} else {
			lastMenuSetOpenedId = menuSetId;
		}
		// showing sub lastMenuSetOpenedId
		if (inArray_(menuSetArray, lastMenuSetOpenedId)) {
			var submenu = document.getElementById(lastMenuSetOpenedId);
			submenu.style.display = "block";
			submenu.style.visibility = "visible";
		}		
		/*var submenu = document.getElementById(menuSetId);
		submenu.style.display = "block";
		submenu.style.visibility = "visible";
		*/
	}
}

function holdOn(elId) {
	var aParents = new Array();

	aParents = getAllParents(elId);

	for (var i=0; i<aParents.length; i++) {
		if (aParents[i] != '') {
			el = document.getElementById(aParents[i]);
			if (el.src != undefined) {
				el.src = eval('img' + elId.substr(1) + '_on.src');
			}
			var replace_ = new RegExp ('_over', 'gi');
			className_ = el.className;
			el.className = className_.replace(replace_, '_on');	
		}
	}
}


function menuOver(elId) {
	el = document.getElementById(elId);
	if (el.src != undefined) {
		el.src = eval('img' + elId.substr(1) + '_over.src');
	}
	var replace_ = new RegExp ('_off', 'gi');
	className_ = el.className;
	el.className = className_.replace(replace_, '_over');	

	var replace_ = new RegExp ('_on', 'gi');
	className_ = el.className;
	el.className = className_.replace(replace_, '_over');	
}

function menuOn(elId) {
	el = document.getElementById(elId);
	if (el.src != undefined) {
		el.src = eval('img' + elId.substr(1) + '_on.src');
	}
	var replace_ = new RegExp ('_off', 'gi');
	className_ = el.className;
	el.className = className_.replace(replace_, '_on');	

	var replace_ = new RegExp ('_over', 'gi');
	className_ = el.className;
	el.className = className_.replace(replace_, '_on');	
}

function hideSub(menuSetIdOpened) {
	if (menuSetIdOpened != null) {
		// get last level menu opened in tree structure
		// store menu set id in lastMenuSetOpenedId
		//if menu set don't exist rename to curent menu
		if (!inArray_(menuSetArray, menuSetIdOpened)) {
			lastMarkPos = menuSetIdOpened.lastIndexOf('_');
			lastMenuSetOpenedId = menuSetIdOpened.substr(0,(lastMarkPos));
		} else {
			lastMenuSetOpenedId = menuSetIdOpened;
		}
	}
	
	// HIDE all sub except parents of lastMenuSetOpenedId
	for (var i=0; i<menuSetArray.length; i++){
		el = document.getElementById(menuSetArray[i]);
		if (menuSetIdOpened == null) {
			el.style.display = "none";
			el.style.visibility = "hidden";
		// hide all except parents of lastMenuSetOpenedId
		} else if (lastMenuSetOpenedId.indexOf(menuSetArray[i]) == -1) {
			el.style.display = "none";
			el.style.visibility = "hidden";
		}
	}
	// END HIDE
}


function turnOff(elIdOn) {
	var turnThisOff;
	var thisHighlightAsOver;

	for (var i=0; i<menuElArray.length; i++){
		turnThisOff = false;
		thisHighlightAsOver = false;
		el = document.getElementById(menuElArray[i]);
		
		if (elIdOn != menuElArray[i]) {
			elSetId = 'ms' + menuElArray[i].substr(1);
			//if elSet dont exist
			if (!(elSet = document.getElementById(elSetId))) {
				turnThisOff = true;
			//if elSet is not desplayd
			} else if (elSet.style.display != "block") {
				turnThisOff = true;
			} else if (elSet.style.display == "block") {
				thisHighlightAsOver = true;
			}
		}
		
		if (thisHighlightAsOver) {
			var replace_ = new RegExp ('_over', 'gi') ;
			if (el.src != undefined) {
				el.src = eval('img' + el.id.substr(1) + '_on.src');
			}
			className_ = el.className;
			el.className = className_.replace(replace_, '_on');

			var replace_ = new RegExp ('_off', 'gi') ;
			className_ = el.className;
			el.className = className_.replace(replace_, '_on');
		}
		
		
		//turn off all _on and _over
		if (turnThisOff) {
			if (el.src != undefined) {
				el.src = eval('img' + el.id.substr(1) + '_off.src');
			}

			var replace_ = new RegExp ('_over', 'gi') ;
			className_ = el.className;
			el.className = className_.replace(replace_, '_off');

			var replace_ = new RegExp ('_on', 'gi') ;
			className_ = el.className;
			el.className = className_.replace(replace_, '_off');
		}
	}
}
/**
*turn off menu this menu, if this menu set is opened hold this on
*/
function turnOffThis(elId) {
	var turnOff = false;
	menuSetId = 'ms' + elId.substr(1);
	
	el = document.getElementById(elId);
	var replace_ = new RegExp ('_over', 'gi');
	className_ = el.className;
	
	if (inArray_(menuSetArray, menuSetId)) {
		var elSet = document.getElementById(menuSetId);
		if (elSet.style.display == "block") {
			if (el.src != undefined) {
				el.src = eval('img' + elId.substr(1) + '_on.src');
			}
			el.className = className_.replace(replace_, '_on');
		} else {
			turnOff = true;
		}
	} else {
		turnOff = true;
	}
	
	if (turnOff) {
		if (el.src != undefined) {
			el.src = eval('img' + elId.substr(1) + '_off.src');
		}
		el.className = className_.replace(replace_, '_off');
	}
	
}



function openMenu(openId) {
	var aOpenIds = new Array();

	aOpenIds = getAllParents(openId);

	for (var i=0; i<aOpenIds.length; i++) {
		if (aOpenIds[i] != '') {
			showSub(aOpenIds[i]);
		}
	}
	showSub(openId);
}
function getAllParents(elId) {
	var aParents = new Array();
	
	lastMarkPos = elId.lastIndexOf('_');
	menuSetIdOneLevelUp = elId.substr(0,(lastMarkPos));
	
	do {
		elId = elId.substr(0,(lastMarkPos));
		aParents[aParents.length] = elId;
		lastMarkPos = elId.lastIndexOf('_');
	} while(elId.lastIndexOf('_') != -1);

	return aParents.reverse();
}




function hideAll(hideAllAfterMs) {
	delayHideAll = window.setTimeout('hideSub(null);turnOff();', hideAllAfterMs);
}

function resetHideAll() {
	window.clearTimeout(delayHideAll);
}



// function get elements by class name ... simiar to getElementsByTagName
// leave container arg out, and will default to document. 
function getelementsbyclassname(className,container)  
{  
  if (!container) {
  	container = document;
  }
  if (container.all) {
  	var all = container.all;
  } else {
  	var all = container.getElementsByTagName('*');  	
  }
  var arr = [] ; 
  for(var k=0;k<all.length;k++) {
    if(all[k].className == className) {
      arr[arr.length] = all[k]; 
     }
  }
  return arr;
}

function subStringCount(str_, subStr_) {
	count = 0;
	pos = str_.indexOf(subStr_);
	while(pos != -1) {
		count++;
		pos = str_.indexOf(subStr_,pos+1);
	}
	return count;
}

function inArray_(arr, el) {
	for (i = 0; i < arr.length; i++) {
		if (arr[i] == el) {
			return true;
		}
	}
}

function switchOver(num) {
	document['image'+num].src = eval("image" + num + "over.src");
}

function switchOff(num)	{
	if (num != menuHoldHiglighted) {
		document['image'+num].src = eval("image" + num + "off.src");
	}
}

