
var listContainer, listItemArray, listLink, listLinkClassArray, cookieArray, cookieArray2, cookieCount, isCollapse;
function listView(target, saveState){
	var cookieCount = 0;
	if (document.cookie) {
		cookieArray = document.cookie.split(";");
		cookieArray2 = new Array();
		
		for (i in cookieArray) {
			if (cookieArray[i].indexOf("=") == -1) cookieArray[i] = cookieArray[i] + "=false";
			cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")] = cookieArray[i].split("=")[1].replace(/ /g,"");
		}
	}
	
	cookieArray = (document.cookie.indexOf("state=") >= 0) ? cookieArray2["state"].split(",") : new Array();
	
	listContainer = document.getElementById(target);
	listContainer.className = "list-container";
	listItemArray = listContainer.getElementsByTagName("li");
	
	for (var items = 0; items < listItemArray.length; items++) {
		
		if (listItemArray[items].getElementsByTagName("ul").length > 0) {
			/**
			* Defined "listLink"
			* Then apply attributes
			*/
			listLink = listItemArray[items].getElementsByTagName("a")[0];
			//listLink.style.backgroundImage = (cookieArray.length > 0) ? ((cookieArray[cookieCount] == "true") ? "url(minus.png)" : "url(plus.png)") : "url(plus.png)";
			listLinkClassArray = listLink.className.split(" ");
			if (cookieArray.length > 0 && listLinkClassArray[0] != "") {
				for (var classNames = 0; classNames < listLinkClassArray.length; classNames++) {
					if (cookieArray[cookieCount] == "true" && listLinkClassArray[classNames] == "open") {
						listLinkClassArray[classNames] = listLinkClassArray[classNames].replace("open", "close");
						break;
					} else if (cookieArray[cookieCount] != "true" && listLinkClassArray[classNames] == "close") {
						listLinkClassArray[classNames] = listLinkClassArray[classNames].replace("close", "open");
						break;
					} else if (classNames == listLinkClassArray.length - 1 && listLinkClassArray[classNames] != "") {
						listLinkClassArray.push("open");
						break;
					}
				}
				
			} else {
				listLinkClassArray.push("close");
			}
			
			listLink.className = listLinkClassArray.join(" ");
			listLink.className = (listLink.className != "" || listLink.className != undefined) ? "symbols" + " " + listLink.className : "symbols";
			if (listLink.href == "") listLink.href = "javascript: void(0);";
			listLink.onclick = function () {
				showhide(this.parentNode);
				if (saveState) writeCookie();
			}
			
			// Hide child ul
			listItemArray[items].getElementsByTagName("ul")[0].style.display = "none";
			
			// Check cookie and perform showhide
			if (cookieArray[cookieCount] == "true") showhide(listItemArray[items]);
			
			cookieCount++;
			
		} else {
			/*
			listLink = document.createElement("span");
			listLink.className = (listLink.className != "" || listLink.className != undefined) ? listLink.className + " " + "list-symbols" : "list-symbols";
			listLink.style.backgroundImage = "url(page.png)";
			listItemArray[items].insertBefore(listLink, listItemArray[items].firstChild);
			*/
		}
	}
}

function toggleLayer( whichLayer )
{
	if (isCollapse != false){
	  var elem, vis;
	  if( document.getElementById ) // this is the way the standards work
		elem = document.getElementById( whichLayer );
	  else if( document.all ) // this is the way old msie versions work
		  elem = document.all[whichLayer];
	  else if( document.layers ) // this is the way nn4 works
		elem = document.layers[whichLayer];
	  vis = elem.style;
	  // if the style.display value is blank we try to figure it out here
	  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
		vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
	  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
	}
}

function showhide(el){
	
	/*
	* changes the flash variable "category" to indicate which category was clicked on
	*/
	if( window.document.portfolioMenu != undefined ) {
		var categoryName = el.getElementsByTagName("ul")[0].parentNode.getElementsByTagName("a")[0].innerHTML;
		if (categoryName == "Museums and Visitor Centers" || categoryName == "Corporate Exhibitions" || categoryName == "A/V and Lighting Systems"){
			window.document.portfolioMenu.SetVariable("category", categoryName);
		}
		toggleLayer('collapse');
		isCollapse = false;
	}
	
	//el.getElementsByTagName("ul")[0].style.display = (el.getElementsByTagName("ul")[0].style.display == "block") ? "none" : "block";
	var elementLI = el.parentNode.getElementsByTagName("li");
	var elementA = el.getElementsByTagName("a")[0];
	var elementUL = el.getElementsByTagName("ul")[0];
	elementUL.state = !(elementUL.style.display == "block");
	
	for (var items = 0; items < elementLI.length; items++) {
		if (elementLI[items].getElementsByTagName("ul").length > 0 && elementLI[items].getElementsByTagName("ul")[0].state) {
			elementLI[items].getElementsByTagName("ul")[0].style.display = "none";
			elementLI[items].getElementsByTagName("a")[0].className = elementLI[items].getElementsByTagName("a")[0].className.replace("open", "close");
		}
	}
	
	elementUL.style.display = (elementUL.style.display == "block") ? "none" : "block";
	listLinkClassArray = elementA.className.split(" ");
		
	
	for (var classNames = 0; classNames < listLinkClassArray.length; classNames++) {
		if (listLinkClassArray[classNames] == "open") {
			listLinkClassArray[classNames] = listLinkClassArray[classNames].replace("open", "close");
			break;
		} else if (listLinkClassArray[classNames] == "close") {
			listLinkClassArray[classNames] = listLinkClassArray[classNames].replace("close", "open");
			break;
		} else if (classNames == listLinkClassArray.length - 1) {
			listLinkClassArray.push("close");
			break;
		}
	}
	
	elementA.className = listLinkClassArray.join(" ");
	//el.getElementsByTagName("a")[0].style.backgroundImage = (el.getElementsByTagName("ul")[0].style.display == "block") ? "url(minus.png)" : "url(plus.png)";
}

function writeCookie(){ // Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together and assigned to a cookie.
	cookieArray = new Array();
	
	for (var items = 0; items < listItemArray.length; items++) {
		if (listItemArray[items].childNodes.length > 0) {
			if (listItemArray[items].getElementsByTagName("ul").length > 0) {
				cookieArray[cookieArray.length] = (listItemArray[items].getElementsByTagName("ul")[0].style.display == "block");
			}
		}
	}
	
	document.cookie="state="+cookieArray.join(",")+";expires="+new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
}
