//menu "padding"
var padding_x = 101;
var padding_y = -13;


//menu disappear speed onMouseout (in miliseconds)
var disappeardelay = 250;

//hide menu when user clicks within menu?
var hidemenu_onclick = "no";

var ie4 = document.all
var ns6 = document.getElementById&&!document.all

if ( ie4 || ns6 ) {
	document.write('<div id="dropmenudiv" style="visibility: hidden;" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>');
}

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;
}

function showhide(obj, e, visible, hidden) {
	if ( ie4 || ns6 ) {
		dropmenuobj.style.left = dropmenuobj.style.top = -500;
		if (
			e.type == "click" &&
			obj.visibility == hidden ||
			e.type == "mouseover"
		) { obj.visibility = visible; }
		else if ( e.type == "click" ) { obj.visibility = hidden; }
	}
}

function iecompattest() {
	return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}

function clearbrowseredge(obj, whichedge) {
	var edgeoffset = 0;
	if ( whichedge == "rightedge" ) {
		var windowedge = ie4 && !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 windowedge = ie4 && !window.opera ? (iecompattest().scrollTop + iecompattest().clientHeight - 15) : (window.pageYOffset + window.innerHeight - 18);
		dropmenuobj.contentmeasure = dropmenuobj.offsetHeight;
		if ( (windowedge - dropmenuobj.y) < dropmenuobj.contentmeasure ) {
			edgeoffset = dropmenuobj.contentmeasure + obj.offsetHeight;
		}
	}
	return edgeoffset
}


function populatemenu(what) {
	if ( ie4 || ns6 ) { dropmenuobj.innerHTML = what.join(""); }
}


function dropdownmenu(obj, e, menucontents) {
	if ( window.event ) { event.cancelBubble = true; }
	else if ( e.stopPropagation ) { e.stopPropagation(); }
	
	clearhidemenu();
	
	dropmenuobj = document.getElementById ? document.getElementById("dropmenudiv") : dropmenudiv;
	populatemenu(menucontents);
	
	if ( ie4 || ns6 ) {
		showhide(dropmenuobj.style, e, "visible", "hidden");
		dropmenuobj.x = getposOffset(obj, "left") + padding_x;
		dropmenuobj.y = getposOffset(obj, "top") + padding_y;
		dropmenuobj.style.left = (dropmenuobj.x - clearbrowseredge(obj, "rightedge") + padding_x) + "px";
		dropmenuobj.style.top = (dropmenuobj.y - clearbrowseredge(obj, "bottomedge") + obj.offsetHeight + padding_y) + "px";
	}
	
	return clickreturnvalue();
}

function clickreturnvalue() {
	if ( ie4 || ns6 ) { return false; }
	else { return true; }
}

function contains_ns6(a, b) {
	while ( b.parentNode ) {
		if ( (b = b.parentNode) == a) { return true; }
	}
	return false;
}

function dynamichide(e) {
	if ( ie4 && !dropmenuobj.contains(e.toElement) ) {
		delayhidemenu();
	}
	else if (
		ns6 &&
		e.currentTarget != e.relatedTarget &&
		!contains_ns6(e.currentTarget, e.relatedTarget)
	) {
		delayhidemenu();
	}
}

function hidemenu(e) {
	if ( typeof dropmenuobj != "undefined" ) {
		if ( ie4 || ns6 ) { dropmenuobj.style.visibility = "hidden"; }
	}
}

function delayhidemenu() {
	if ( ie4 || ns6 ) { delayhide = setTimeout("hidemenu()", disappeardelay); }
}

function clearhidemenu() {
	if ( typeof delayhide != "undefined" ) { clearTimeout(delayhide); }
}

if ( hidemenu_onclick == "yes" ) { document.onclick = hidemenu; }
