//++++++++ Begin Main Program Section ++++++++//
var disappeardelay = 5000; //menu disappear speed onMouseout (in milliseconds)
var hidemenu_onclick = "yes"; //hide menu when user clicks within menu?
var delayhide = '';
var prevmenu = '';
var debug = 1;


var isNav4, isIE4;
if (navigator.appVersion.charAt(0) >= "4") {
  if (navigator.appName == "Netscape")  {
	  isNav4 = true;
	}
	else if (navigator.appVersion.indexOf("MSIE") != -1 ) {
	  isIE4 = true;
	}
}
if (debug) {
//  writeMsg("Navigator Version: " + navigator.appVersion);
//	writeMsg("Navigator Version #: " + navigator.appVersion.charAt(0));
//	writeMsg("Application Name: " + navigator.appName);
//	writeMsg("Compatibility: isNav4:" + isNav4 + "; isIE4:" + isIE4);
}

var ie4 = document.all;
//var ns6 = document.getElementsByTagName && !document.all;
var ns6 = document.getElementById && !document.all;

if (hidemenu_onclick == "yes")
  document.onclick = hidemenu

//++++++++ End Main Program Section ++++++++//

//++++++++ Begin Function Section ++++++++//
function writeMsg(msg) {
  document.write("<br \/><small><i>" + msg + "<\/i><\/small>");
}

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, event, visible, hidden){

  if (ie4||ns6)
		obj.left = obj.top

  if (event.type == "click" && obj.visibility == hidden || event.type == "mouseover") {
    obj.visibility = visible
		//hidemenu();
	}
  else if (event.type == "click") {
    obj.visibility = hidden
		//hidemenu();
	}	
}

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 topedge = ie4 && !window.opera ? iecompattest().scrollTop : window.pageYOffset
    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){ //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
}

//function populatemenu(what){
//  if (ie4 || ns6)
//    dropmenuobj.innerHTML = what.join("")
//}

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(event){
  if (ie4 && !dropmenuobj.contains(event.toElement))
    delayhidemenu()
  else if (ns6 && e.currentTarget != event.relatedTarget && 
	         !contains_ns6(event.currentTarget, event.relatedTarget))
    delayhidemenu()
}

function hidemenu(){
  if (typeof dropmenuobj != "undefined"){
    if (ie4 || ns6)
      dropmenuobj.style.visibility = "hidden"
  }
}

function delayhidemenu(){
  if (ie4 || ns6)
    delayhide = setTimeout("hidemenu()", disappeardelay)
}

//function delayshowhidemenu(event){
//  if ( typeof dropmenuobj != "undefined") {
//    if (ie4 || ns6)
//      delayhide = setTimeout("showhidemenu(dropmenuobj.style, event, 'visible', 'hidden')", disappeardelay)
//	}		
//}

function clearhidemenu(){
  if (typeof delayhide != "undefined")
    clearTimeout(delayhide)
}

function dropdownmenu(obj, event, menucontents){

  if (window.event) { //IE
	  event.cancelBubble = true;
	}
  else if (event.stopPropagation) {
	  event.stopPropagation();
  }
	
  clearhidemenu();
	
	if ( prevmenu != menucontents )
	  hidemenu();
	
//	menuobj = document.getElementsByTagName("div");
//	for ( var i=0; i<menuobj.length; i++ ) {
////	  alert(menuobj.length + ";" + i + ";" + menuobj.item(i).nodeName + ";" + menuobj.item(i).getAttribute('name'));
//	  if ( menuobj.item(i).getAttribute('name') == menucontents ) {
////  	  alert("Found menu item");
//			dropmenuobj = menuobj.item(i);
//		}
//	}
	
	dropmenuobj = document.getElementById ? document.getElementById(menucontents) : menucontents;
	
  if (ie4||ns6){
		showhide(dropmenuobj.style, event, "visible", "hidden")
    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"
  }

	prevmenu = menucontents;
	
  return clickreturnvalue()
}