/*
===================================================
XHTML/CSS/DHTML Semantically correct drop down menu 
===================================================
Author: Sam Hampton-Smith
Site: http://www.hampton-smith.com
*/

	var currentMenu = null;
	var mytimer = false;
	//var mytimer = null;
	var timerOn = false;
	var agt=navigator.userAgent.toLowerCase();
	var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);
	var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var IE4up  = (is_ie && (is_major >= 4));
	//var IE4up = document.all && window.external ? true : false;
	//var IE4up = navigator.userAgent.indexOf("Microsoft") != -1;
	
	var Opera = window.opera ? true : false;
	// netscape browsers
	var NN  = (navigator.userAgent.indexOf("Netscape") != -1) && !Opera;
	var is_nn6 = (navigator.product == 'Gecko') && (!window.find)?true:false;
	var is_nn7 = (navigator.product == 'Gecko') && (window.find)?true:false;

	var Moz = (navigator.userAgent.indexOf("Mozilla") != -1) && !NN;
	var is_mac = navigator.userAgent.indexOf("Mac") != -1;
	
	if (!document.getElementById)
		document.getElementById = function() { return null; }
	
	function stopTime() {
		//alert("stoptime");
		if (mytimer) {
		//alert("stoptime");
			//clearInterval(mytimer);
		 	 clearTimeout(mytimer);
			 mytimer = false;
			 //mytimer = null;
			 timerOn = false;
		}
	}
	
	function initialiseMenu(menu, starter, root) {
		var leftstarter = false;
	
		if (menu == null || starter == null) return;
			currentMenu = menu;
	
		starter.onmouseover = function() {
			if (currentMenu) {
				//alert(this.parentNode.parentNode.id + ' ' + currentMenu.id);
				if (this.parentNode.parentNode!=currentMenu) {
					currentMenu.style.visibility = "hidden";
				}
				if (this.parentNode.parentNode==root) {
					tempCurrentMenu = currentMenu
					while (tempCurrentMenu.parentNode.parentNode!=root) {
						tempCurrentMenu.parentNode.parentNode.style.visibility = "hidden";
						tempCurrentMenu = tempCurrentMenu.parentNode.parentNode;
					}
				}
				currentMenu = null;
				this.showMenu();
	        	}
		}
	
		menu.onmouseover = function() {
			if (currentMenu) {
				currentMenu = null;
				this.showMenu();
	        	}
		}	
	
		starter.showMenu = function() {
			if (IE4up) {
				if (is_mac){
					if (this.parentNode.parentNode==root) {
						menu.style.left = this.offsetLeft+7 + "px";
						menu.style.top = this.offsetTop+28 + "px";
						//menu.style.top = this.offsetTop + this.offsetHeight + "px";
					}
					else {
						menu.style.left = this.offsetLeft + this.offsetWidth + "px";
						menu.style.top = this.offsetTop+28 + "px";
					}
				}
				else{ //pc
					if (this.parentNode.parentNode==root) {
						menu.style.left = this.offsetLeft+1 + "px";
						menu.style.top = this.offsetTop-1 + this.offsetHeight + "px";
					}
					else {
						menu.style.left = this.offsetLeft+1 + this.offsetWidth + "px";
						menu.style.top = this.offsetTop-1 + "px";
					}
				}
			}
			else if (Opera) {
				if (this.parentNode.parentNode==root) {
					menu.style.left = this.offsetLeft+7 + "px";
					menu.style.top = this.offsetHeight-4 + "px";
				}
				else {
				 	menu.style.left = this.offsetWidth+7 + "px";
				 	menu.style.top = this.offsetTop-4 + "px"; //menu.style.top - menu.style.offsetHeight + "px";
				}

			}
			else if (Moz) {
			//alert("moz");
				if (this.parentNode.parentNode==root) {
					menu.style.left = this.offsetLeft+1 + "px";
					menu.style.top = this.offsetHeight+132 + "px";
				}
				else {
				 	menu.style.left = this.offsetWidth + "px";
				 	menu.style.top = this.offsetTop+132 + "px";
				}

			}
			else if (NN) {
				if (is_mac){
				//alert("macNet");
					if (this.parentNode.parentNode==root) {
							menu.style.left = this.offsetLeft+7 + "px";
							menu.style.top = this.offsetHeight+5 + "px";
						}
						else {
							menu.style.left = this.offsetWidth + "px";
							menu.style.top = this.offsetTop+5 + "px";
						}
					}
				else if (is_nn7){
				//alert("net7");
					if (this.parentNode.parentNode==root) {
						menu.style.left = this.offsetLeft+7 + "px";
						menu.style.top = this.offsetHeight+5 + "px";
					}
					else {
						menu.style.left = this.offsetWidth + "px";
						menu.style.top = this.offsetTop+5 + "px";
					}
				}
				else {
				//alert("net6");
					if (this.parentNode.parentNode==root) {
						menu.style.left = this.offsetLeft+7 + "px";
						menu.style.top = this.offsetHeight+5 + "px";
					}
					else {
						menu.style.left = this.offsetWidth + "px";
						menu.style.top = this.offsetTop+5 + "px";
					}
				}
			}
			else {
					if (this.parentNode.parentNode==root) {
						menu.style.left = this.offsetLeft + "px";
						menu.style.top = this.offsetHeight+7 + "px";
					}
					else {
						menu.style.left = this.offsetWidth + "px";
						menu.style.top = this.offsetTop+7 + "px";
					}
				}

			menu.style.visibility = "visible";
			currentMenu = menu;
		}
		
		menu.hideMenu = function()  {
		//alert("hide started");
			if (!timerOn) {
				//alert(this.id);
				//mytimer = setInterval("killMenu('" + this.id + "', '" + root.id + "');", 800);
				mytimer = setTimeout("killMenu('" + this.id + "', '" + root.id + "');", 400);
				timerOn = true;
				//alert("timer set to true");
				for (var x=0;x<menu.childNodes.length;x++) {
					if (menu.childNodes[x].nodeName=="LI") {
						if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
							menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
							menuItem.style.visibility = "hidden";
						}
					}
				}
			}
		}
		
		starter.onfocus	= function() {
			starter.onmouseover();
		}

		menu.showMenu = function() {
		//alert("show");
			menu.style.visibility = "visible";
			currentMenu = menu;
			stopTime();
		}

		menu.onmouseout = function(event) {
		//alert("onmouseout");
		timerOn = false;
			this.hideMenu();
		}

		starter.onmouseout = function() {
		//alert("starter.onmouseout");
			for (var x=0;x<menu.childNodes.length;x++) {
				if (menu.childNodes[x].nodeName=="LI") {
					if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
						menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
						menuItem.style.visibility = "hidden";
					}
				}
			}
			menu.style.visibility = "hidden";
			//menu.hideMenu();
		}
}

function getMenus(elementItem, root) {
	var selectedItem;
	var menuStarter;
	var menuItem;
	//alert("in getmenus");
	//alert(elementItem.childNodes.length);
	for (var x=0;x<elementItem.childNodes.length;x++) {
		//alert(elementItem.childNodes[x].nodeName);
		if (elementItem.childNodes[x].nodeName=="LI") {
			//alert("Yes!");
			if (elementItem.childNodes[x].getElementsByTagName("UL").length>0) {
				//alert("Set up");
				menuStarter = elementItem.childNodes[x].getElementsByTagName("A").item(0);
				menuItem = elementItem.childNodes[x].getElementsByTagName("UL").item(0);
				getMenus(menuItem, root);
				initialiseMenu(menuItem, menuStarter, root);
			}
		}
	}
	//return true;
}

	function killMenu(menu, root) {
	//alert("killstarted");
		var menu = document.getElementById(menu);
		var root = document.getElementById(root);
		menu.style.visibility = "hidden";
		for (var x=0;x<menu.childNodes.length;x++) {
			if (menu.childNodes[x].nodeName=="LI") {
				if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
					menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
					menuItem.style.visibility = "hidden";
				}
			}
		}
		while (menu.parentNode.parentNode!=root) {
			menu.parentNode.parentNode.style.visibility = "hidden";
			menu = menu.parentNode.parentNode;
		}
		stopTime();
	}

//for homepage rollover thing
function objlocate(lyrname, sorh) { 
  var p,i,x;
   if(!sorh) sorh=document;
    if((p=lyrname.indexOf("?"))>0&&parent.frames.length) {
    sorh=parent.frames[lyrname.substring(p+1)].document; lyrname=lyrname.substring(0,p);}
  if(!(x=sorh[lyrname])&&sorh.all) x=sorh.all[lyrname];
   for (i=0;!x&&i<sorh.forms.length;i++) x=sorh.forms[i][lyrname];
  for(i=0;!x&&sorh.layers&&i<sorh.layers.length;i++) x=objlocate(lyrname,sorh.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(lyrname);
   return x;
}
function layerswap() {
  var i,p,v,obj,args=layerswap.arguments;
  for (i=0; i<(args.length-2); i+=3)
   if ((obj=objlocate(args[i]))!=null) {
   v=args[i+2];
    if (obj.style) {
     obj=obj.style;
      v=(v=='show')?'visible':(v='hide')?'hidden':v;
       }
    obj.visibility=v;
     }
}

var outer; 
function init_new(){ 
outer = document.getElementById('outer'); 
resize(); 
} 
function resize(){ 
	if (is_mac){
		if (IE4up){
		howTall = 0;
		howTall = document.body.clientHeight;
		outer.style.height = howTall + 'px'; 
		}
	}
} 
function redoMac(){  //refreashes page but fixes mac IE resizing probs
	if (is_mac){
		if (IE4up){
		
window.location.reload();
		}
	}
}
window.onresize=redoMac; 

window.onload = function() {
		//alert("loaded");
		init_new();
		var root = document.getElementById("menuList");
		//alert("About to execute getmenus");
		getMenus(root, root);
	}
	



