var slideSpeed = 15; //steps in to move the menu, higher # is faster
var slideTimeout = 5; //milliseconds between steps, lower is faster
var leftNav;

function MenuDiv(menuDiv, parent) {
	this.div = menuDiv;
	this.width = 216;
	this.isOpen = false;
	this.parent = parent;
	this.leftShim = document.getElementById("leftShim");
	if(this.leftShim) {
		this.leftShim.style.display="none";
		this.leftShim.style.width = this.width +'px';
		this.leftShim.style.height = menuDiv.offsetHeight+'px';
		this.leftShim.style.top = menuDiv.offsetTop+'px';
		this.leftShim.style.left = menuDiv.offsetLeft+'px';
	}
	
	this.initLeft = function() {
		this.div.style.display = "none";
	}
	
	this.showMenu = function() {
		if(!this.isOpen) {
			this.div.style.left = getLeftPosition(this.parent) + "px"; //Set my leftside to my parent's left, so I slide from the left
			this.div.style.top = getTopPosition(this.parent) + "px";
			this.div.style.width = "0px";
			this.div.style.visibility = "visible";
			this.div.style.display = "";
			if(this.leftShim) {
				this.leftShim.style.display = "block";
			}
			this.slideOpenMenu();
		}
	}
	
	this.hideMenu = function() {
		if(this.isOpen) {
			this.slideCloseMenu();
			this.parent.style.display = "block";
		}
	}
	
	this.slideOpenMenu = function() {
		var newWidth = this.div.offsetWidth + slideSpeed;
		if(newWidth >= this.width) {
			this.isOpen = true;
			this.div.style.width = this.width + "px";
			//this.parent.style.display = "none";
			
		} else {
			this.div.style.width = newWidth + "px";
			setTimeout("slideOpenMenu()",  slideTimeout);
		}
	}
	
	this.slideCloseMenu = function() {
		var newWidth = this.div.offsetWidth - slideSpeed;
		if(newWidth <= 0) {
			this.isOpen = false;
			this.div.style.display = "none";
			if(this.leftShim) {
				this.leftShim.style.display = "none";
			}
		} else {
			this.div.style.width = newWidth + "px";
			setTimeout("slideCloseMenu()",  slideTimeout);
		}
	}
	
	
}
function initLeftNav() {
	var leftNavDiv = document.getElementById("leftNavDiv");
	var leftNavClosedDiv = document.getElementById("leftNavClosedDiv");
	leftNav = new MenuDiv(leftNavDiv, leftNavClosedDiv);
	leftNav.initLeft();
}

function showLeftMenu() {
	leftNav.showMenu();
}

function hideLeftMenu() {
	leftNav.hideMenu();
}

function slideOpenMenu() {
	leftNav.slideOpenMenu();
}

function slideCloseMenu() {
	leftNav.slideCloseMenu();
}

addLoadEvent(function() {
	if (document.getElementById) {
		var bodyContent = document.getElementById("bodyContent");
		var leftNavBar = document.getElementById("leftNavBar");
		if(leftNavBar && bodyContent) {
			var bottomPadding = bodyContent.offsetHeight - leftNavBar.offsetHeight + 208;
			leftNavBar.style.paddingBottom = bottomPadding + "px";
		}
	}
});

function showHideSection(divId, imgId) {
	var divElement = document.getElementById(divId);
	var imageSource = document.getElementById(imgId);
	if(divElement.style.display == "none") {
		divElement.style.display = "block";
		imageSource.src = upImage;
		updateCookies(leftNavCookie, divElement, "block");
	} else {
		divElement.style.display = "none";
		imageSource.src = downImage;
		updateCookies(leftNavCookie, divElement, "none");
	}
	
}

function showHideSubSection(divId, imgId) {
	var divElement = document.getElementById(divId);
	var imageSource = document.getElementById(imgId);

	if(divElement.style.display == "none") {
		divElement.style.display = "block";
		if(imageSource.src.indexOf('Hi') >= 0) {
			imageSource.src = minusHiImage;
		} else {
			imageSource.src = minusImage;
		}
		updateCookies(leftNavCookie, divElement, "block");
	} else {
		divElement.style.display = "none";
		if(imageSource.src.indexOf('Hi') >= 0) {
			imageSource.src = plusHiImage;
		} else {
			imageSource.src = plusImage;
		}
		updateCookies(leftNavCookie, divElement, "none");
	}
	
}

function showSection(divId, imgId) {
	var divElement = document.getElementById(divId);
	var imageSource = document.getElementById(imgId);
	
	divElement.style.display = "block";
	imageSource.src = downImage;
}

function expandCollapseAll() {
	var element = document.getElementById('expandAll');
	var eText = element.innerHTML;
	var displayStyle = "block";
	var displayImg = upImage;
	var subImg = minusImage;
	var subHiImg = minusHiImage;
	if(eText == expandAll) {
		element.innerHTML = collapseAll;
	} else {
		element.innerHTML = expandAll;
		displayStyle = "none";
		displayImg = downImage;
		subImg = plusImage;
		subHiImg = plusHiImage;
	}
	var leftNav = document.getElementById('leftNavDiv');
	var divElements = leftNav.getElementsByTagName('DIV');

	for(var i=0; i < divElements.length; i++) {
		if(divElements[i].getAttribute('name') == "nav_div_grp") {
			divElements[i].style.display = displayStyle;
			updateCookies(leftNavCookie, divElements[i], displayStyle);
		}
	}
	
	updateImages(document.getElementsByName('nav_img_grp'), displayImg);
	updateImages(document.getElementsByName('navSubImg'), subImg);
	updateImages(document.getElementsByName('navSubImgHi'), subHiImg);
}

function updateImages(imgCollection, newImg) {
	for(var i=0; i < imgCollection.length; i++) {
		imgCollection[i].src = newImg;
	}
}
