document.write("<link href=\"static/css/screen-js.css\" rel=\"stylesheet\" type=\"text/css\" />\n");

$( document ).ready( function() {
	yer.init();
} );

var yer = {
	
	/* Constructor */
	init: function() {
		this.pagenav = document.getElementById("page-nav");
		this.filters = $("ul.filter");
		this.boxes = $(".box-toggle");
		this.remoteTogglesOpen = $("a.remote-toggle-open");
		this.bindEvents();
	},
	
	bindEvents: function() {
		this.bindNavEvents();
		this.bindFilterToggles();
		this.bindBoxToggles();
	},
	
	bindNavEvents: function() {
		if(this.pagenav){
			var navitems = $(">li", this.pagenav);
			for (var i=0; i<navitems.length; i++){
				var navspan = $(">span:first-child", navitems[i]);
				navspan.bind( "mouseover", {root: this}, this.openSubNav);
				navspan.bind( "mouseout", this.setNavTimer);
				var subnavitems = $("a", navitems[i]);
				for (var j=0; j<subnavitems.length; j++) {
					$(subnavitems[j]).bind( "mouseover", this.clearNavTimer);
					$(subnavitems[j]).bind( "mouseout", this.setNavTimer);
				}
			}
		}
	},
	
	setNavTimer: function() {
		yer.navTimer = setTimeout(function(){$(yer.currentSubNav).removeClass("opened");},5000);
	},
	
	clearNavTimer: function() {
		clearTimeout(yer.navTimer);
	},
	
	openSubNav: function(e) {
		if (e.data && e.data.root) {
			var root = e.data.root;
			if (!e) {
				var e = window.event;
			}
			if (root.navTimer) {
				clearTimeout(root.navTimer);
			}
			if (e.target) {
				targ = e.target;
			}
			else if (e.srcElement) {
				targ = e.srcElement;
			}
			if (targ.nodeType == 3) {
				targ = targ.parentNode;
			}			
			var classname = e.data.classname;
			if (root.currentSubNav) {
				$(root.currentSubNav).removeClass("opened");
			}
			$(targ.parentNode).addClass("opened");
			root.currentSubNav = targ.parentNode;
		}
	},
	
	bindFilterToggles: function() {
		for (var i=0; i < this.filters.length; i++){
			var items = $(">li", this.filters[i]);
			for (var j=0; j < items.length; j++){
				var toggleSpan = $("span:first-child", items[j]);
				if (toggleSpan[0]){
					var tmpBtn = $("<span tabindex=\"0\">"+toggleSpan[0].innerHTML+"</span>");
					$(toggleSpan[0]).before(tmpBtn);
					$(toggleSpan[0]).remove();
					tmpBtn.bind( "click", {element: items[j], classname: "opened"}, this.toggle);
					tmpBtn.bind( "keydown", {element: items[j], classname: "opened"}, function(e){if (e.keyCode == 13) {yer.toggle(e);}});
				}
			}
		}
	},
	
	bindBoxToggles: function() {
		for (var i=0; i < this.boxes.length; i++){
			var toggles = $(".toggle", this.boxes[i]);
			var toggleContent = $(".toggle-content", this.boxes[i]);
			if(toggleContent.length > 0){
				for (var j=0; j < toggles.length; j++){
					$(toggles[j]).bind( "click", {element: this.boxes[i], classname: "box-toggle-opened"}, this.toggle);
					$(toggles[j]).bind( "keydown", {element: this.boxes[i], classname: "box-toggle-opened"}, function(e){if (e.keyCode == 13) {yer.toggle(e);}});
				}
			}
		}
		for (var i = 0; i < this.remoteTogglesOpen.length; i++) {
			var href = this.remoteTogglesOpen[i].href;
			if(href){
				var hrefSplit = href.split("#");
				if (hrefSplit.length > 0){
					var boxID = hrefSplit[hrefSplit.length-1];
					var box = document.getElementById(boxID);
					if(box){
						$(this.remoteTogglesOpen[i]).bind( "click", function(){$(box).addClass("box-toggle-opened")});
					}
				}
			}
		}
	},
	
	//Rebuilds an complete HTML element with new optional attributes, preventing browser issues.
	rebuildElement: function() {
		
	},
	
	toggle: function(e) {
		if( e.preventDefault ) {
			e.preventDefault();
		} else {
			e.cancelBubble = true;
		}
		if (e.data && e.data.element) {
			var element = e.data.element;
			var classname = e.data.classname;
			$(element).hasClass(classname) ? $(element).removeClass(classname) : $(element).addClass(classname);
		}
		return false;
	}
}