dojo.require("dojo.hash");
dojo.require("dojo.fx");

dojo.addOnLoad(function(){

	var current = dojo.query("#nav .current");

	dojo.query("#nav .main").onmouseenter(function(){
		current.toggleClass("current", false);
	});
	dojo.query("#nav .sub").onmouseenter(function(){
		dojo.query("#nav .sub a.current").toggleClass("current", false);
	})
	dojo.query("#nav").onmouseleave(function(){
		current.toggleClass("current", true);
		dojo.query("#nav .active").toggleClass("active", false);
	});

	dojo.query("#nav .main a").onmouseenter(function(){
		dojo.query("#nav .main a").toggleClass("active", false);
		dojo.query("#nav .sub .active").toggleClass("active", false);
		dojo.toggleClass(this, "active");
		var menu = dojo.query("span", this);
		if(menu && menu.length == 1){
			var strClass = dojo.attr(menu[0], "class");
			if(strClass.length > 0){
				dojo.query("#nav .sub ." + strClass).toggleClass("active", true);
			}
		}
	});
	
	dojo.query("#nav .sub a").onmouseenter(function(){
		dojo.query("#nav .sub a.current").toggleClass("current", false);
	});

	dojo.query("#nav .main a").onclick(function(){
		current = dojo.query("#nav .active");
	});
	dojo.query("#nav .sub a").onclick(function(){
		current = dojo.query("#nav .active");
	});

	//faq page
	dojo.query("#page .center .faqs .question .answer").forEach(function(o){
		b2l.faqHeights[o.id] = dojo.marginBox(o).h;
	});
	dojo.query("#page .center .faqs .question:not(:first-child) .answer").toggleClass("hide", true);
	dojo.query("#page .center .faqs .question:first-child .bullet").toggleClass("active");

	dojo.subscribe("/dojo/hashchange", null, b2l.loadFromHash);
	b2l.loadFromHash();

	//school page
	dojo.query("#school-select-form #select-school").onchange(function(){
		location.href = dojo.config.webRoot + "/" + dojo.attr(this, "value");
	});

	var updateLists = dojo.query("#project-updates .update-list:not(:first-child)");
	if(updateLists.length != 0){
		if(updateLists.length == 1){
			dojo.query("#project-updates .button-place a").style("display", "none");
		}
		dojo.query("#project-updates .show-all").onclick(b2l.showAllUpdates);
		dojo.query("#project-updates .button-place a.show-updates").onclick(b2l.showMoreUpdates);
		dojo.query("#project-updates .button-place a.hide-updates").onclick(b2l.hideUpdates);
	}

	var gImageList = dojo.query("#project-gallery .thumb-place a");
	if(gImageList.length != 0){
		Shadowbox.init();
		if(gImageList.length < 5){
			dojo.query("#project-gallery .button-place a").style("display", "none");
		}
		dojo.query("#project-gallery .button-place a").onclick(b2l.toggleFullGallery);
	}

	dojo.query("#contact-us #contact-type").onchange(function(){
		dojo.toggleClass("contact-agency-field", "hide", (dojo.attr(this, "value") != "media"));
	});

	dojo.query("#home #header #banner").forEach(function(node){
		window.setInterval(b2l.homeRotation, 7000);
	});
});

var b2l = {
	currentFaq: 1,
	faqHeights: {},
	currentUpdate: 0,
	homeBanners: ["banner1", "banner5", "banner6", "banner8", "banner9", "banner10", "banner11"],
	rotateCurrent: 0,
	loadFromHash: function(e){
		var sHash = dojo.hash();
		var num = 0;
		if(/^faq-(\d+)$/.test(sHash)){
			num = RegExp.$1;
			cur = b2l.currentFaq;
			b2l.currentFaq = num;
			var targetHeight = b2l.faqHeights["faq-answer-" + num] + 10;	
			if(!e){
				dojo.toggleClass("faq-bullet-" + cur, "active", false);
				dojo.toggleClass("faq-bullet-" + num, "active", true);
				dojo.toggleClass("faq-answer-" + cur, "hide", true);
				dojo.toggleClass("faq-answer-" + num, "hide", false);
			}
			else{
				dojo.toggleClass("faq-bullet-" + cur, "active", false);
				dojo.toggleClass("faq-bullet-" + num, "active", true);
				var anim = dojo.fx.combine([
					dojo.animateProperty({node: "faq-answer-" + cur, properties: {height: 0}, onEnd: function(){
						dojo.toggleClass("faq-answer-" + cur, "hide", true);
						dojo.style("faq-answer-" + cur, "height", "");
					}}),
					dojo.animateProperty({node: "faq-answer-" + num, properties: {height: targetHeight}, onEnd: function(){
						dojo.toggleClass("faq-answer-" + num, "hide", false);
						dojo.style("faq-answer-" + cur, "height", "");
					}})
				]).play();
			}
		}
	},
	showAllUpdates: function(e){
		dojo.stopEvent(e);
		var updateLists = dojo.query("#project-updates .update-list:not(:first-child)");
		while (updateLists[b2l.currentUpdate]) {
			b2l.showMoreUpdates(e);
		}
	},
	showMoreUpdates: function(e){
		dojo.stopEvent(e);
		var updateLists = dojo.query("#project-updates .update-list:not(:first-child)");
		var index = b2l.currentUpdate++;
		if(updateLists[index]){
			dojo.style(updateLists[index], {"display": "block", "overflow": "hidden", "height": "0px"});
			dojo.fx.wipeIn({node: updateLists[index]}).play();
		}
		if(!updateLists[index + 1]){
			dojo.fadeOut({
				node: dojo.query("#project-updates .button-place a.show-updates")[0],
				onEnd: function(){
					dojo.query("#project-updates .button-place a.show-updates").style("display", "none");
				}
			}).play();
		}
		dojo.query("#project-updates .project-count .showing").attr("innerHTML", b2l.currentUpdate + 1);
		dojo.query("#project-updates .button-place a.hide-updates").style("display", "block");
	},
	hideUpdates: function(e){
		dojo.stopEvent(e);
		var anims = [];
		dojo.query("#project-updates .update-list:not(:first-child)").style({"display": "", "overflow": "", "height": ""});

		dojo.query("#project-updates .button-place a.hide-updates").style("display", "none");
		dojo.query("#project-updates .button-place a.show-updates").style("display", "block");
		dojo.fadeIn({
			node: dojo.query("#project-updates .button-place a.show-updates")[0]
		}).play();

		b2l.currentUpdate = 0;
		dojo.query("#project-updates .project-count .showing").attr("innerHTML", b2l.currentUpdate + 1);
	},
	toggleFullGallery: function(e){
		dojo.stopEvent(e);
		var _t = this;
		var animProperties = {
			node: "gallery-thumb-wrap",
			properties: {height: 180},
			onEnd: function(){
				dojo.toggleClass(_t, "active");
			}
		};
		
		if(!dojo.hasClass(this, "active")){
			animProperties.properties.height = dojo.marginBox("gallery-thumb-container").h;
		}

		dojo.animateProperty(animProperties).play();
	},
	homeRotation: function(){
		var oFadeOut = dojo.create("div", {"class": b2l.homeBanners[b2l.rotateCurrent]}, "banner", "only");
		if(++b2l.rotateCurrent >= b2l.homeBanners.length){
			b2l.rotateCurrent = 0;
		}
		dojo.attr("banner", "class", b2l.homeBanners[b2l.rotateCurrent]);
		dojo.fadeOut({node: oFadeOut, duration:800}).play();
	}
};

