
var PowerSearch = { 
	animationActive: false
};

PowerSearch.setup = function() {
	PowerSearch.filters = {
		seasons: {
			element: document.getElementById("seasons"),
			listWrapper: getElements("list_wrapper", "div", document.getElementById("seasons"))[0],
			listElement: document.getElementById("seasons").getElementsByTagName("ol")[0],
			toggleElement: document.getElementById("seasons").getElementsByTagName("h5")[0]
		},
		
		designers: {
			element: document.getElementById("designers"),
			listWrapper: getElements("list_wrapper", "div", document.getElementById("designers"))[0],
			toggleElement: document.getElementById("designers").getElementsByTagName("h5")[0],
			closeButton: getElements("close_button", "div", document.getElementById("flyout_hed"))[0]
		},
		
		categories: {
			element: document.getElementById("categories"),
			listWrapper: getElements("list_wrapper", "div", document.getElementById("categories"))[0],
			listElement: document.getElementById("categories").getElementsByTagName("ol")[0],
			toggleElement: document.getElementById("categories").getElementsByTagName("h5")[0]
		}
	};
	
	PowerSearch.filters.seasons.stateElement = getElements("open", "div", PowerSearch.filters.seasons.element)[0];
	if (PowerSearch.filters.seasons.stateElement == undefined)
		PowerSearch.filters.seasons.stateElement = getElements("closed", "div", PowerSearch.filters.seasons.element)[0];
	PowerSearch.filters.seasons.activeElement = getElements("active", "div", PowerSearch.filters.seasons.element)[0];
	if (PowerSearch.filters.seasons.activeElement == undefined)
		PowerSearch.filters.seasons.activeElement = getElements("inactive", "div", PowerSearch.filters.seasons.element)[0];
	
	PowerSearch.filters.designers.stateElement = getElements("open", "div", PowerSearch.filters.designers.element)[0];
	if (PowerSearch.filters.designers.stateElement == undefined)
		PowerSearch.filters.designers.stateElement = getElements("closed", "div", PowerSearch.filters.designers.element)[0];
	PowerSearch.filters.designers.activeElement = getElements("active", "div", PowerSearch.filters.designers.element)[0];
	if (PowerSearch.filters.designers.activeElement == undefined)
		PowerSearch.filters.designers.activeElement = getElements("inactive", "div", PowerSearch.filters.designers.element)[0];
	
	PowerSearch.filters.categories.stateElement = getElements("open", "div", PowerSearch.filters.categories.element)[0];
	if (PowerSearch.filters.categories.stateElement == undefined)
		PowerSearch.filters.categories.stateElement = getElements("closed", "div", PowerSearch.filters.categories.element)[0];
	PowerSearch.filters.categories.activeElement = getElements("active", "div", PowerSearch.filters.categories.element)[0];
	if (PowerSearch.filters.categories.activeElement == undefined)
		PowerSearch.filters.categories.activeElement = getElements("inactive", "div", PowerSearch.filters.categories.element)[0];
	
	PowerSearch.filters.seasons.toggleFunction = function() {
		if (PowerSearch.animationActive)
			return;

		PowerSearch.animationActive = true;			

		if (PowerSearch.filters.seasons.stateElement.className == "closed") {
		
			if (PowerSearch.filters.designers.stateElement.className == "open") {
				new Effect.Fade(PowerSearch.filters.designers.listWrapper, {
					duration: 0.75,
					afterFinish: function() {
						
						PowerSearch.filters.designers.listWrapper.style.visibility = "";
						PowerSearch.filters.designers.listWrapper.style.top = "";
						PowerSearch.filters.designers.listWrapper.style.left = "";
						document.getElementById("designers").appendChild(PowerSearch.filters.designers.listWrapper);
						PowerSearch.filters.designers.stateElement.className = "closed";
							
						new Effect.BlindDown(PowerSearch.filters.seasons.listWrapper, {
							duration: 0.75,
							afterFinish: function() { 
								PowerSearch.filters.seasons.stateElement.className = "open"; 
								PowerSearch.animationActive = false;
							}
						});
					}
				});
			}
			else if (PowerSearch.filters.categories.stateElement.className == "open") {
				new Effect.Parallel([
					new Effect.BlindUp(PowerSearch.filters.categories.listWrapper, {
						duration: 0.75,
						afterFinish: function() { PowerSearch.filters.categories.stateElement.className = "closed"; }
					}),
					new Effect.BlindDown(PowerSearch.filters.seasons.listWrapper, {
						duration: 0.75,
						afterFinish: function() { PowerSearch.filters.seasons.stateElement.className = "open"; }
					})
				], {
					afterFinish: function() { PowerSearch.animationActive = false; }
				});
			}
			else {
				new Effect.BlindDown(PowerSearch.filters.seasons.listWrapper, {
					afterFinish: function() { 
						PowerSearch.filters.seasons.stateElement.className = "open"; 
						PowerSearch.animationActive = false;
					}
				});
			}
	
		}
		else {
			new Effect.BlindUp(PowerSearch.filters.seasons.listWrapper, { 
				duration: 0.75,
				afterFinish: function() {
					PowerSearch.filters.seasons.stateElement.className = "closed";
					PowerSearch.animationActive = false;
				}
			});
		}
	};

	PowerSearch.filters.categories.toggleFunction = function() {
		if (PowerSearch.animationActive)
			return;
			
		PowerSearch.animationActive = true;
		
		if (PowerSearch.filters.categories.stateElement.className == "closed") {
		
			if (PowerSearch.filters.designers.stateElement.className == "open") {
				new Effect.Fade(PowerSearch.filters.designers.listWrapper, {
					duration: 0.75,
					afterFinish: function() {
						
						PowerSearch.filters.designers.listWrapper.style.visibility = "";
						PowerSearch.filters.designers.listWrapper.style.top = "";
						PowerSearch.filters.designers.listWrapper.style.left = "";
						document.getElementById("designers").appendChild(PowerSearch.filters.designers.listWrapper);
						PowerSearch.filters.designers.stateElement.className = "closed";
	
						new Effect.BlindDown(PowerSearch.filters.categories.listWrapper, {
							duration: 0.75,
							afterFinish: function() {
								PowerSearch.filters.categories.stateElement.className = "open";
								PowerSearch.animationActive = false;
							}
						});
					}
				});
			}
			else if (PowerSearch.filters.seasons.stateElement.className == "open") {
				new Effect.Parallel([
					new Effect.BlindUp(PowerSearch.filters.seasons.listWrapper, {
						duration: 0.75,
						afterFinish: function() { PowerSearch.filters.seasons.stateElement.className = "closed"; }
					}),
					new Effect.BlindDown(PowerSearch.filters.categories.listWrapper, {
						duration: 0.75,
						afterFinish: function() { PowerSearch.filters.categories.stateElement.className = "open"; }
					})
				], {
					afterFinish: function() { PowerSearch.animationActive = false; }
				});
			}
			else {
				new Effect.BlindDown(PowerSearch.filters.categories.listWrapper, {
					afterFinish: function() { 
						PowerSearch.filters.categories.stateElement.className = "open"; 
						PowerSearch.animationActive = false;
					}
				});
			}
		}
		else {
			new Effect.BlindUp(PowerSearch.filters.categories.listWrapper, { 
				duration: 0.75,
				afterFinish: function() {
					PowerSearch.filters.categories.stateElement.className = "closed";
					PowerSearch.animationActive = false;
				}
			});
		}
	};


	PowerSearch.filters.designers.toggleFunction = function() {
		if (PowerSearch.animationActive)
			return;
			

		PowerSearch.animationActive = true;
		
		if (PowerSearch.filters.designers.stateElement.className == "closed") {
	
			PowerSearch.filters.designers.listWrapper.style.visibility = "hidden";
			PowerSearch.filters.designers.listWrapper.style.display = "block";
			var offsets = getOffsets(PowerSearch.filters.designers.listWrapper);
			PowerSearch.filters.designers.listWrapper.style.display = "none";
			PowerSearch.filters.designers.listWrapper.style.visibility = "visible";
			
	
			document.body.appendChild(PowerSearch.filters.designers.listWrapper);
			PowerSearch.filters.designers.listWrapper.style.top = "277px";
			PowerSearch.filters.designers.listWrapper.style.left = offsets.left + "px";
	
			if (PowerSearch.filters.seasons.stateElement.className == "open") {
				new Effect.BlindUp(PowerSearch.filters.seasons.listWrapper, {
					duration: 0.75,
					afterFinish: function() {
						PowerSearch.filters.seasons.stateElement.className = "closed";
						new Effect.Appear(PowerSearch.filters.designers.listWrapper, {
							duration: 0.5,
							afterFinish: function() {
								PowerSearch.filters.designers.stateElement.className = "open";
								PowerSearch.animationActive = false;
							}
						});
					}
				});
			}
	
			else if (PowerSearch.filters.categories.stateElement.className == "open") {
				new Effect.BlindUp(PowerSearch.filters.categories.listWrapper, {
					duration: 0.75,
					afterFinish: function() {
						PowerSearch.filters.categories.stateElement.className = "closed";
						new Effect.Appear(PowerSearch.filters.designers.listWrapper, {
							duration: 0.5,
							afterFinish: function() {
								PowerSearch.filters.designers.stateElement.className = "open";
								PowerSearch.animationActive = false;
							}
						});
					}
				});
			}
			else {
				new Effect.Appear(PowerSearch.filters.designers.listWrapper, {
					duration: 0.5,
					afterFinish: function() {
						PowerSearch.filters.designers.stateElement.className = "open";
						PowerSearch.animationActive = false;
					}
				});
			}
	
		}
		else {
			new Effect.Fade(PowerSearch.filters.designers.listWrapper, {
				duration: 0.5,
				afterFinish: function() {
					PowerSearch.filters.designers.listWrapper.style.visibility = "";
					PowerSearch.filters.designers.listWrapper.style.top = "";
					PowerSearch.filters.designers.listWrapper.style.left = "";
					document.getElementById("designers").appendChild(PowerSearch.filters.designers.listWrapper);
					PowerSearch.filters.designers.stateElement.className = "closed";
					PowerSearch.animationActive = false;
				}
			});
		}
	};
	
	if (PowerSearch.filters.seasons.activeElement.className == "inactive")
		Handler.add(PowerSearch.filters.seasons.toggleElement, "click", PowerSearch.filters.seasons.toggleFunction);
	
	if (PowerSearch.filters.categories.activeElement.className == "inactive")
		Handler.add(PowerSearch.filters.categories.toggleElement, "click", PowerSearch.filters.categories.toggleFunction);

	if (PowerSearch.filters.designers.activeElement.className == "inactive") {
		Handler.add(PowerSearch.filters.designers.toggleElement, "click", PowerSearch.filters.designers.toggleFunction);
		Handler.add(PowerSearch.filters.designers.closeButton, "click", PowerSearch.filters.designers.toggleFunction);
	}
	
	var nav_links = getElements("nav_link", "div", document.getElementById("alphabetical_nav"));
	for (var i = 0; i < nav_links.length; ++i) {
		Handler.add(nav_links[i], "click", function() {
			var targets = getElements("nav_target", "h5", document.getElementById("alphabetical_list"));
			for (var i = 0; i < targets.length; ++i) {
				if (targets[i].innerHTML == this.innerHTML) {
					document.getElementById("alphabetical_list").scrollTop = targets[i].offsetTop;
				}
			}
		});
	}
};


PowerSearch.setup();

