var leftDrop = document.getElementById("leftDrop");
var liTags = leftDrop.getElementsByTagName("li");
var mainLinks = [];
var primaryDrops = [];
var ul;
var tempObject;
var timerID;
var tempObject2;
var timerID2;
	
for (i=0; i<liTags.length; i++) { //finds all of the main level links with dropdowns and stores them in an array call mainLinks
	if (liTags[i].getElementsByTagName("ul").length != 0) {
		
		if (liTags[i].childNodes[0].nodeName == "A") {
			liTags[i].childNodes[0].className = "nav_dropdown";
		} else {
			liTags[i].className = "noLink";
		}
		
		if (liTags[i].parentNode.parentNode.nodeName == "DIV") {
			mainLinks.push(liTags[i]);
		} else {
			primaryDrops.push(liTags[i]);
		}			
	}
}

for (i=0; i<mainLinks.length; i++) { // apply for statement to all LI tags
	mainLinks[i].onmouseover=function() {	
		clearTimeout(timerID);
		if (tempObject != this && typeof tempObject == "object") {
			removeClass(/over/g, tempObject);
		} 
		addClass("over", this);
		ul = getUL(this);
		if (getY(this) + 10 + this.childNodes[ul].offsetHeight >= windowHeight() || getY(this) + 10 + this.childNodes[ul].offsetHeight >= getY(document.getElementById("footer"))) {
			this.childNodes[ul].className = "dropUp";
		} else {
			removeClass(/dropUp/g, this.childNodes[ul]);
		}
	}
	mainLinks[i].onmouseout=function() {
		tempObject = this;
		timerID = setTimeout('removeClass(/over/g, tempObject)', 350);
	}
}

for (i=0; i<primaryDrops.length; i++) { // apply for statement to all LI tags
	primaryDrops[i].onmouseover=function() {		
		clearTimeout(timerID2);
		addClass("over", this.parentNode.parentNode);	
		if (tempObject2 != this) {
			removeClass(/over/g, tempObject2);
		}		
		addClass("over", this);

		ul = getUL(this);
		if (getY(this) + 10 + this.childNodes[ul].offsetHeight >= windowHeight() || getY(this) + 10 + this.childNodes[ul].offsetHeight >= getY(document.getElementById("footer"))) {
			this.childNodes[ul].className = "dropUp2";
		} else {
			removeClass(/dropUp2/g, this.childNodes[ul]);
		}
	}
	primaryDrops[i].onmouseout=function() {
		tempObject2 = this;
		timerID2 = setTimeout('removeClass(/over/g, tempObject2)', 350);
	}
}

function addClass(classname, element) {
	if (element.className == "") {
		element.className = classname;
		
	} else if (element.className.search(classname) == -1) {
		element.className += " " + classname;
	}
}
function removeClass(classname, element) {
	if (typeof element == "object") {
		element.className = element.className.replace(classname, "");
	}
}
function getY(e) { // determines the absolute y coordinate of the top of the element
	var y = 0;
	while(e) {
		y += e.offsetTop;
		e = e.offsetParent;
	}
	return y;
}
function getUL(e) { // get the node index number of the element
	for (i=0; i<e.childNodes.length; i++) {
		if (e.childNodes[i].nodeName == "UL") return i
	}
}

function windowHeight() {
	if (window.innerHeight) {
		return (window.innerHeight + window.pageYOffset);
	} else if (document.documentElement.clientHeight) {
		return (document.documentElement.clientHeight + document.documentElement.scrollTop);
	}
	else if (document.body.clientHeight) {
		return (document.body.clientHeight + document.body.scrollTop);
	}
}

