/***************************************************************************
	DOM Menu     
	sbMenu for DOM-browsers.
    Copyright (c) 2001 Sune Boeegh. All Rights Reserved.
****************************************************************************/

// user vars
sbmTimeTillHide = 250;
sbmCentered = true;
if (navigator.appVersion.indexOf("Mac")!=-1) {
    sbmLeftPos = 385;
} else {	
    sbmLeftPos = 385;
}
sbmOverLap = 5;

// internal vars
sbmArr = new Array();
sbmUserOverMenu = false;
sbmHideAllTimer = null;
sbmAreLoaded = false;
sbmIE = (document.all) ? true : false;
sbmW3C = (document.getElementById && !sbmIE) ? true : false;

function sbmSM(id) {
	if (sbmAreLoaded) {
    	sbmUserOverMenu = true; 
		sbmDoShow(id);
        clearTimeout(sbmArr[id].hideTimer);
        sbmArr[id].hideTimer = null;
		sbmArr[id].isActive = true;	            	
	}
}

function sbmDoShow(id) {
	var element = document.getElementById(id);
    element.style.visibility = "visible";
		
	// ambassadornet-modification
	var vaElement = document.getElementById("sbt_"+id.substring(4,id.length));
	if (vaElement) {
		vaElement.className = "menuItemHover";
	}
}

function sbmDoHide(id) {
	var element = document.getElementById(id);
    element.style.visibility = "hidden";

	// ambassadornet-modification
	var vaElement = document.getElementById("sbt_"+id.substring(4,id.length));
	if (vaElement) {
		vaElement.className = "menuItem";
	}
}

function sbmMenuOver(id) {
    sbmArr[id].isActive = true;
	sbmUserOverMenu = true;
	if (sbmArr[id].hideTimer) clearTimeout(sbmArr[id].hideTimer);
}

function sbmMenuOut(id) {
	if(document.all && event.srcElement.contains(event.toElement)) return;
    sbmArr[id].isActive = false;
	sbmUserOverMenu = false;
	clearTimeout(sbmHideAllTimer);
	sbmHideAllTimer = null;
	sbmHideAllTimer = setTimeout("sbmHideTree('"+id+"')",sbmTimeTillHide); 
}  

function sbmHideTree(id) {
    sbmHideAllTimer = null;
    if (sbmUserOverMenu) return;
    for (foo in sbmArr) {
		sbmDoHide(foo);    
    }
}

function sbmHideChildren(id,callId) {
    var TempMenu = sbmArr[sbmArr[id].visibleChild];
    while(TempMenu.hasChildVisible) {
        sbmDoHide(TempMenu.visibleChild);
        TempMenu.hasChildVisible = false;
        TempMenu = TempMenu.visibleChild;
    }
    
	if ((sbmArr[id].visibleChild!=callId) || (!sbmArr[id].isActive)) {
        sbmDoHide(sbmArr[id].visibleChild);
        sbmArr[id].hasChildVisible = false;
    }
}

function sbmItemOver(id,childId) {
	if (sbmArr[id].hasChildVisible) {
		if ((sbmArr[id].visibleChild == childId) && (sbmArr[sbmArr[id].visibleChild].hasChildVisible)) {
        	sbmHideChildren(sbmArr[id].visibleChild,id);
		} else {
        	sbmHideChildren(id,id);
        }
    }
	if (childId!="") {
        sbmArr[id].hasChildVisible = true;
        sbmArr[id].visibleChild = childId;
        sbmDoShow(childId);
	}
}

function sbmTopHM(id) {
	if (sbmAreLoaded) {
	    sbmArr[id].isActive = false;
		sbmArr[id].hideTimer = setTimeout("sbmHM('"+id+"')",sbmTimeTillHide);
	}
}    

function sbmTopSM(id) {
	if (sbmAreLoaded) {
		sbmUserOverMenu = false;
    	sbmHideTree();
	    sbmArr[id].isActive = true;
		sbmSM(id);
	}
}    

function sbmHM(id) {
    sbmArr[id].isActive = false;
    sbmArr[id].hideTimer = null;
	sbmDoHide(id);
}

function sbmFixLeft(id) {
  	if (sbmHasParent(id)) {
        var parentId = id.substring(0,id.length-2);
		var parentElement = document.getElementById(parentId);
        var parentOffsetLeft = parseInt(parentElement.offsetLeft);
        
    	if (parentOffsetLeft==0) { 
           	sbmFixLeft(parentId);
		}
	
    	var element = document.getElementById(id);
        var parentWidth = parseInt(parentElement.offsetWidth);  
        var elementWidth = parseInt(element.offsetWidth);  
		if (parentOffsetLeft+parentWidth-sbmOverLap+elementWidth>sbmWindowWidth) {
			element.style.left = parentOffsetLeft+sbmOverLap-elementWidth;
        } else {
			element.style.left = parentOffsetLeft+parentWidth-sbmOverLap;
		}

		// ambassadornet-modification
		var vaElement = document.getElementById("sbmi_"+id.substring(4,id.length));
        if (vaElement) {
            element.style.top = parseInt(vaElement.offsetTop)+parseInt(parentElement.offsetTop)-1;
        }
		
        if (element.offsetTop+element.offsetHeight>document.body.offsetHeight) {
			element.style.top = document.body.offsetHeight-element.offsetHeight;
        }
    }
}

function adjustLeftTopMenu(id) {
   	var element = document.getElementById(id);
    sbmWindowWidth = window.innerWidth;
    if (typeof(sbmWindowWidth)=="undefined") {
      	sbmWindowWidth = document.body.scrollWidth;
    }

    var thisOffsetLeft;
	topMenuElement = document.getElementById("sbt_"+id.substring(4,id.length));	
	
	thisOffsetLeft = sbmGetAbsoluteLeft(topMenuElement);
	sbmArr[id].orgOffsetLeft = thisOffsetLeft;
	element.style.left = thisOffsetLeft+"px";

	thisOffsetTop = sbmGetAbsoluteTop(topMenuElement)+parseInt(topMenuElement.offsetHeight)+2;
	element.style.top = thisOffsetTop+"px";
}


function sbmResizeHandler() {
	for (foo in sbmArr) {        
    	if (!sbmHasParent(foo)) {
			adjustLeftTopMenu(foo);
		}
	}
	for (foo in sbmArr) {        
    	if (sbmHasParent(foo)) {
            sbmFixLeft(foo);
		}
	}
	sbmOtherResize();
}

function sbmHasParent(id) {
	if (id.lastIndexOf("_")!=3) {
    	return true;
    } else {
    	return false;
    }
}

function sbmInit() {
	
	var aDivs = document.body.getElementsByTagName("DIV");
	for (var foo=0; foo<aDivs.length; foo++) {
    	thisDivId = aDivs[foo].id; 
		if (thisDivId.substring(0,4)=="sbm_") {
            sbmArr[thisDivId] = new Object(); 
			sbmArr[thisDivId].hideTimer = null;	            	
			sbmArr[thisDivId].isActive = false;	            	
			sbmArr[thisDivId].hasChildVisible = false;
            if (sbmHasParent(thisDivId)) {
				sbmArr[thisDivId].parentId = thisDivId.substring(0,thisDivId.length-2);	            	
			} else {
            	sbmArr[thisDivId].parentId = null;
				adjustLeftTopMenu(thisDivId);
            }
            sbmFixLeft(thisDivId);
        }
	}
    
	sbmOtherResize = (window.onresize) ? window.onresize :  new Function;
    window.onresize = sbmResizeHandler;

    sbmAreLoaded = true;
}

function sbmGetAbsoluteLeft(element) {
	var xPos = element.offsetLeft;
	var tempEl = element.offsetParent;
  	while (tempEl != null) {
  		xPos += tempEl.offsetLeft;
  		tempEl = tempEl.offsetParent;
  	}
	return xPos;
}

function sbmGetAbsoluteTop(element) {
	var yPos = element.offsetTop;
	var tempEl = element.offsetParent;
  	while (tempEl != null) {
  		yPos += tempEl.offsetTop;
  		tempEl = tempEl.offsetParent;
  	}
	return yPos;
}

