// Rollit - Drop Down Menus
// Version 2.0 - Supports multiple menu items

// Set compatibilty flags
var ie5=document.all
var ns6=document.getElementById&&!document.all

// Main class for Drop Down Menus
var rollit = {
    timeout : Array(),
    showPopup : function(obj, e, menuid, submenuid){
        clearTimeout(this.timeout[menuid]);
		var menu = document.getElementById(submenuid)
        if(menu.style.display == 'none') {
			this.timeout[menuid] = setTimeout(function(){ showmenu(obj, e, menuid, submenuid) }, 10);
        }
        if(menu.style.visibility == 'hidden') {
		   this.timeout[menuid] = setTimeout(function(){ showmenu(obj, e, menuid, submenuid) }, 10);
        }
    },
    hidePopup : function(obj, e, menuid, submenuid){
		var menu = document.getElementById(submenuid)
        if(menu.style.display == 'none' || menu.style.visibility == 'hidden') {
            clearTimeout(this.timeout[menuid]);
        } else {
	        if(menu.style.display == 'inline') {
				this.timeout[menuid] = setTimeout(function(){ hidemenu(obj, e, menuid, submenuid) }, 50);
	        }
	        if(menu.style.visibility == 'visible') {
				this.timeout[menuid] = setTimeout(function(){ hidemenu(obj, e, menuid, submenuid) }, 50);
	        }
			
        }
    }   
}

// showmenu method
var dropmenuobj;
function showmenu(obj, e, menuid, submenuid){
	var topmenuobj = document.getElementById(menuid);
	topmenuobj.style.backgroundColor="#00A2CB";
	
	if (ie5||ns6){
		dropmenuobj=document.getElementById(submenuid);
		dropmenuobj.style.left=dropmenuobj.style.top=-500;
		dropmenuobj.x=getposOffset(obj, "left");
		dropmenuobj.y=getposOffset(obj, "top");
		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px";
		dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px";
		dropmenuobj.style.visibility = "visible";
	}
}

// hidemenu method
function hidemenu(obj, e, menuid, submenuid){
	var topmenuobj = document.getElementById(menuid);
	topmenuobj.style.backgroundColor = "";
	
	var dropmenuobj = document.getElementById(submenuid);
	dropmenuobj.style.visibility = "hidden";
}

// getposOffset method
function getposOffset(what, offsettype){
	var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
	var parentEl=what.offsetParent;
	while (parentEl!=null){
		totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
		parentEl=parentEl.offsetParent;
	}
	return totaloffset;
}

// clearbrowseredge method
function clearbrowseredge(obj, whichedge){
	var edgeoffset=0
	if (whichedge=="rightedge"){
		var windowedge=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
		dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
		if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
			edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
	} 
	else{
		var topedge=ie5 && !window.opera? iecompattest().scrollTop : window.pageYOffset
		var windowedge=ie5 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
		dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
		if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
			edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
		if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
			edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
	}
	}
	return edgeoffset
}

// iecompattest method
function iecompattest(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
