var aryMenus = new Array();
var intHideTimeID = new String();

function ddMenu(strMenuID) {
	this.id = strMenuID;
	this.dhtmlement = document.getElementById(strMenuID);
    this.style = this.dhtmlement.style;	
	this.height = this.dhtmlement.offsetHeight;
	this.width = this.dhtmlement.offsetWidth;
	this.top = this.dhtmlement.offsetTop;
	this.left = this.dhtmlement.offsetLeft;
	this.intID = 0;
	this.dhtmlement.onmouseover = clearHideTimer;
	this.dhtmlement.onmouseout = initHideTimer;
	
	this.setLeft = function(posX) {
	    this.left = posX;
	    var div = this.dhtmlement;
	    div.style.left = posX + 'px';
	}
}

function showMenu(strName) {
    var strMenuID;
    strMenuID = 'mnuSubNav' + strName;
    
	clearHideTimer();
	hideAllMenus(strMenuID);
	var menuToShow;
	var ref;
	for (var i=0; i < aryMenus.length; i++) {
		var tempMenu = aryMenus[i];
		if (tempMenu.id == strMenuID) {
			menuToShow = tempMenu;
			ref = i;
		}
	}
	
	//set the menu position
	var strImgID = 'imgNav' + strName;
	menuToShow.top = getTop(strImgID) + getHeight(strImgID);
	menuToShow.setLeft(getLeft(strImgID));
	menuToShow.width = getWidth(strImgID);
	
	if (menuToShow.style.visibility != 'visible') {
		menuToShow.style.visibility = 'visible'
	}
	fadeMenu(menuToShow.id,0);
	
}

function fadeMenu(menuID, opacity) {

    var obj = document.getElementById(menuID);
   
	if (opacity < 100) {
	    opacity += 10;
	    
	    //prevent Moz flicker
	    opacity = (opacity == 100)?99.999:opacity;
      
	    // older IE/Win
	    obj.style.filter = 'alpha(opacity:' + opacity + ')';
      
	    // Safari&lt;1.2, Konqueror
	    obj.style.KHTMLOpacity = opacity/100;
      
	    // Older Mozilla and Firefox
	    obj.style.MozOpacity = opacity/100;
      
	    // Safari 1.2, newer IE, Firefox and Mozilla, CSS3
	    obj.style.opacity = opacity/100;
    		
	    setTimeout('fadeMenu("' + menuID + '",' + opacity + ')', 20);
	}
}

function hideAllMenus(strExcept) {
    for (var i=0; i < aryMenus.length; i++) {
		var tempMenu = aryMenus[i];
		if (tempMenu.id != strExcept) {
			if (!tempMenu.intID.isNaN) clearInterval(tempMenu.intID);
			tempMenu.IsSliding = false;
			tempMenu.style.visibility = 'hidden';
		}
	}
}

function initHideTimer() {
    clearHideTimer();
	intHideTimeID = setTimeout("hideAllMenus(null)",500);
}

function clearHideTimer() {
	if (!intHideTimeID.isNaN) clearTimeout(intHideTimeID);
}

function initMenus() {
	for (var i=0; i<document.getElementsByTagName("DIV").length; i++) {
		var divname = new String(document.getElementsByTagName("DIV").item(i).id);
		if (divname.substr(0,3) == 'mnu') {
			eval('obj' + divname + ' = new ddMenu("' + divname + '")');			aryMenus[aryMenus.length] = eval('obj' + divname);		}
	}
}

/******************************************************
 GENERAL POSITIONING FUNCTIONS
******************************************************/
function getTop(elemID) {
    var elem;
    
    if(document.getElementById) {	
		elem = document.getElementById(elemID);
	} else if (document.all) {
		elem = document.all[elemID];
	}
	
	var yPos = elem.offsetTop;
	var tempEl = elem.offsetParent;
	while (tempEl != null) {
		yPos += tempEl.offsetTop;
  		tempEl = tempEl.offsetParent;
	}
	return yPos;

}

function getLeft(elemID) {
    var elem;
    
	if(document.getElementById) {
		elem = document.getElementById(elemID);
	} else if (document.all) {
		elem = document.all[elemID];
	}
	
	var xPos = elem.offsetLeft;
	var tempEl = elem.offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
  		tempEl = tempEl.offsetParent;
	}
	return xPos;

}

function getHeight(elemID) {
    var elem;
    
	if(document.getElementById) {
		elem = document.getElementById(elemID);
	} else if (document.all){
		elem = document.all[elemID];
	}
	if (elem.style.pixelHeight) { 
		h = elem.style.pixelHeight;
	} else {
		h = elem.offsetHeight;
	}
	return h;
	
}

function getWidth(elemID) {
	var elem;
	
	if(document.getElementById) {
		elem = document.getElementById(elemID);
	} else if (document.all){
		elem = document.all[elemID];
	}
	
	if (elem.style.pixelWidth) {
		w = elem.style.pixelWidth;
	} else {
		w = elem.offsetWidth;
	}
	return w;

}

