if (typeof GREENERDAWN == "undefined" || !GREENERDAWN) {
	var GREENERDAWN = {};
}

GREENERDAWN.config = function() {
	return {
		"site": null,
		"page": null,
		"url": null
	};
}();

GREENERDAWN.util = function() {
	var _tabs = [], _hoverType = null, _anim = {};
	
	function _moveTab(type) {
		var nav = YAHOO.util.Dom.get("nav-" + type);
		var tab = YAHOO.util.Dom.get("tab-" + type);

		var posNav = YAHOO.util.Dom.getXY(nav);

		var posTop = posNav[1] + 29;
		var posLeft = posNav[0];
		if (YAHOO.env.ua.gecko >= 1.9 && nav.getBoundingClientRect) {
			posLeft = Math.ceil(nav.getBoundingClientRect().left);
		}

		YAHOO.util.Dom.setStyle(tab, "top", posTop + "px");
		YAHOO.util.Dom.setStyle(tab, "left", posLeft + "px");
	}

	return {
		"resize": function(e) {
			for (var i = 0, il = _tabs.length; i < il; i++) {
				_moveTab(_tabs[i]);
			}
		},

		"mouseOverNav": function(e) {
			YAHOO.util.Dom.addClass(this, "hover");
		},
		"mouseOutNav": function(e) {	
			YAHOO.util.Dom.removeClass(this, "hover");
		},
		
		"initTab": function(type, width) {
			_tabs.push(type);

			var nav = YAHOO.util.Dom.get("nav-" + type);
			var tab = YAHOO.util.Dom.get("tab-" + type);

			var widthNav = parseInt(YAHOO.util.Dom.getStyle(nav, "width").replace(/px/ig, ""));

			var tabTop = tab.childNodes[0];
			var tabTopMiddle = tabTop.childNodes[0];
			var tabTopRight = tabTop.childNodes[1];

			var tabHeader = tab.childNodes[1];
			var tabHeaderMiddle = tabHeader.childNodes[0];
			var tabHeaderRight = tabHeader.childNodes[1];

			var tabBody = tab.childNodes[2];

			var tabFooter = tab.childNodes[3];
			var tabFooterMiddle = tabFooter.childNodes[1];

			var widthTabTop = widthNav + 4;
			var widthTabTopMiddle = widthNav;
			var widthTabTopRight = 4;
			if (width <= widthNav) {
				widthTabTopRight = 0;
				YAHOO.util.Dom.setStyle(tabHeaderRight, "background", "#71BC45");
			}

			var widthTabHeader = width;
			var widthTabHeaderMiddle = widthTabHeader - 4;

			var widthTabBody = width;

			var widthTabFooter = width;
			var widthTabFooterMiddle = widthTabFooter - 8;
			
			if (YAHOO.util.Dom.getStyle("tabs", "display") == "none") {
				YAHOO.util.Dom.setStyle("tabs", "display", "block");
			}

			YAHOO.util.Dom.setStyle(tabTop, "width", widthTabTop + "px");
			YAHOO.util.Dom.setStyle(tabTopMiddle, "width", widthTabTopMiddle + "px");
			YAHOO.util.Dom.setStyle(tabTopRight, "width", widthTabTopRight + "px");

			YAHOO.util.Dom.setStyle(tabHeader, "width", widthTabHeader + "px");
			YAHOO.util.Dom.setStyle(tabHeaderMiddle, "width", widthTabHeaderMiddle + "px");

			YAHOO.util.Dom.setStyle(tabBody, "width", widthTabBody + "px");

			YAHOO.util.Dom.setStyle(tabFooter, "width", widthTabFooter + "px");
			YAHOO.util.Dom.setStyle(tabFooterMiddle, "width", widthTabFooterMiddle + "px");

			_moveTab(type);
		},
		"mouseMoveTab": function(e) {
			var el = YAHOO.util.Event.getTarget(e);
			var elCount = 1;
			var type = null;
			
			while (el != document.body || elCount > 10) {
				if (YAHOO.util.Dom.hasClass(el, "hover")) {
					type = el.id.split("-")[1];
				}
				
				el = el.parentNode;
				elCount++;
			}
			
			if (!YAHOO.lang.isNull(_hoverType) && _hoverType !== type) {
				YAHOO.util.Dom.removeClass("nav-" + _hoverType, "hover");
				YAHOO.util.Dom.removeClass("tab-" + _hoverType, "hover");
				
				YAHOO.util.Event.removeListener(document.body, "mousemove", GREENERDAWN.util.mouseMoveTab);
				
				_hoverType = null;
			}
		},
		"mouseOverTab": function(e) {
			var type = this.id.split("-")[1];
			
			if (YAHOO.lang.isNull(_hoverType) || _hoverType !== type) {
				var tab = YAHOO.util.Dom.get("tab-" + type);
				
				if (!YAHOO.lang.isNull(tab)) {
					YAHOO.util.Dom.setStyle(tab, "opacity", 0);
					YAHOO.util.Dom.addClass(tab, "hover");
				
					var anim = new YAHOO.util.Anim(tab, { "opacity": { "to": 1 } }, .3);
					anim.animate();
				}
				
				YAHOO.util.Dom.addClass(this, "hover");
				
				YAHOO.util.Event.on(document.body, "mousemove", GREENERDAWN.util.mouseMoveTab);

				if (_hoverType !== type) {
					YAHOO.util.Dom.removeClass("nav-" + _hoverType, "hover");
					YAHOO.util.Dom.removeClass("tab-" + _hoverType, "hover");
				}
				
				_hoverType = type;
			}
		},

		"initScroll": function() {
			_anim.sidebar = YAHOO.util.Dom.get("sidebar-scroll");

			if (_anim.sidebar) {
				_anim.scrollTop = -1;

				_anim.scroll = new YAHOO.util.Scroll("sidebar-scroll", { "scroll": { "to": [0, 200] } }, 6);
				_anim.scroll.onComplete.subscribe(function () {
					if (_anim.scrollTop === _anim.sidebar.scrollTop || _anim.sidebar.scrollTop < _anim.scrollTop + 200) {
						_anim.sidebar.scrollTop = 0;
						_anim.scrollTop = -1;
					} else {
						_anim.scrollTop = _anim.sidebar.scrollTop;
					}

					this.attributes.scroll = { "to": [0, _anim.sidebar.scrollTop + 200] };
					YAHOO.lang.later(1000, GREENERDAWN.util, "animScroll");
				});

				YAHOO.lang.later(2000, GREENERDAWN.util, "animScroll");
			}
		},
		"animScroll": function() {
			_anim.scroll.animate();
		}
	};
}();
