/*
 * Dynamic Menu
 * Written by Andy Peatling - http://www.cssdev.com/
 * April 1, 2006.
 * Edited by Matthew Butt
 * 16 October 2006
 */

// CHANGE: implemented as static methods of a holder object
var AnimateMenu = {
	collapseMenu: function(node) {
		if (!document.getElementById) return false;
		if (!document.getElementById("menu")) return false;
		if (!node) node = document.getElementById("menu");
	
		if (node.childNodes.length > 0) {
			for (var i=0; i<node.childNodes.length; i++) {
				var child = node.childNodes[i];
				if (child.nodeName == "UL") {
						child.style.display = "none";
				}
				AnimateMenu.collapseMenu(child);
			}
			// CHANGE add next block
			// This is a clunky fix, but just preventing the previous block from executing >>
			// when (node.className.indexOf("selected") < 0) gives rendering problems in IE.
			for (var i=0; i<node.childNodes.length; i++) {
				var child = node.childNodes[i];
				if (child.nodeName == "UL" && node.className.indexOf("selected") >= 0) {
					child.style.display = "";
				}
			}
		}
	},
	prepareMenu: function() {
		if (!document.getElementById || !document.getElementsByTagName) return false;
		if (!document.getElementById("menu")) return false;
	
		var links = document.getElementById("menu").getElementsByTagName("a");
		for (var i=0; i<links.length; i++) {		
			// CHANGE: implemented addEvent
			addEvent(links[i], "onclick", function() {
				// CHANGE next line instead of ff.
				return AnimateMenu.toggleMenu(this.parentNode.getElementsByTagName("UL")[0], this.href);
				// toggleMenu(this.parentNode.getElementsByTagName("UL")[0], this.href);
				// return false;
			});
		}
	},
	toggleMenu: function(node, link) {
		if (!document.getElementById) return false;
		if (!link) return false;
		// CHANGE next line instead of f.
		if (!node) return true;
		// if (!node) location.href = link.href;
		// Collapse all nodes, and only show clicked node (when clicking top level of menu)
		if (node.parentNode.parentNode.id == "menu") {
			AnimateMenu.hideTopLevels();
		}
		
		if (node.style.display == "") {
			//Effect.BlindUp(node, {duration: 0.2});
		} else {
			Effect.BlindDown(node, {duration: 0.2});
		}
		return false;
	},
	hideTopLevels: function() {
		if (!document.getElementById) return false;
		if (!(node = document.getElementById("menu"))) return false;	
		
		if (node.childNodes.length > 0) {
			for (var i=0; i<node.childNodes.length; i++) {
				var child = node.childNodes[i];
				for(var j=0; j<child.childNodes.length; j++) {
					var grandchild = child.childNodes[j];
					if (grandchild.nodeName == "UL") {
						if (grandchild.style.display == "") {
							Effect.BlindUp(grandchild, {duration: 0.2});
						}
					}
				}
			}		
		}
	},
	doAnimateMenu: function()
	{
		AnimateMenu.collapseMenu();
	}
}

addDOMLoadEvent(AnimateMenu.doAnimateMenu);
addDOMLoadEvent(AnimateMenu.prepareMenu);



var Ticker						/* :Object */	=
{
	init 						/* :Function */	: function() /* :void */
	{
		function isSafeToTick(i)/* :Boolean */
		{
			var _isDesign		/* :Boolean */	= i.href !== null && i.href.indexOf("design.css") > -1;
			var _isSafeToTick	/* :Boolean */	= !_isDesign || !i.disabled;
			return _isSafeToTick;
		}
		/* Check that stylesheets aren't disabled. 
		 * If they are, the script will generate an infinite amount of content, 
		 * which we don't want, so return without doing anything
		 */
		if (!Arr(document.styleSheets).every(isSafeToTick))
		{
			return;
		}
		var _divLatestNews		/* :Element */	= document.getElementById("latest-news");
		if (!_divLatestNews)
		{
			return;
		}
		_divStories 			/* :Element */	= document.getElementById("stories");
		if (!_divStories)
		{
			return;
		}
		_div 					/* :Element */	= document.createElement("div");
		while (_divStories.childNodes.length)
		{
			_div.appendChild(_divStories.childNodes[0]);
		}
		_divStories.appendChild(_div.cloneNode(true));
		_divStories.style.overflow				= "hidden";
		_divStories.scrollTop					= 0;
		function doScroll()		/* :void */
		{
			var _scrollTop		/* :int */		= _divStories.scrollTop;
			_divStories.scrollTop++;
			if (_divStories.scrollTop === _scrollTop)
			{
				_divStories.appendChild(_div.cloneNode(true));
				_divStories.scrollTop++;
			}
			else if (_divStories.scrollTop === _divStories.firstChild.clientHeight)
			{
				while(_divStories.childNodes.length > 1)
				{
					_divStories.removeChild(_divStories.childNodes[1]);
				}
				_divStories.scrollTop = 0;
				doScroll();
			}
		}
		var _tickInterval		/* :int */		= setInterval(doScroll, 40);
		/* Just in case styles have been disabled since we last checked.
		 * Could even do this check inside doScroll, but I don't think so.
		 * addDOMLoadEvent doesn't work in Safari, so the load event is triggered onLoad
		 * and ignores this function call.
		 */
		function doubleCheck()	/* :void */
		{
			if (!Arr(document.styleSheets).every(isSafeToTick))
			{
				clearInterval(_tickInterval);
				_divStories.style.overflow = "auto";
			}
		}
		addLoadEvent(doubleCheck);
	}
}
addDOMLoadEvent(Ticker.init);




var WindowOpen = {
	init: function(){	
		function windowOpen(){
			window.open(this.href,"_blank");
			return false;
		}
		var as = Arr(document.getElementsByTagName("a"));
		var asWindowOpen = as.filter(function(i){return i.className.indexOf("window-open") > -1;});
		asWindowOpen.forEach(function(i){addEvent(i, "onclick", windowOpen);});
	}
}
addDOMLoadEvent(WindowOpen.init);



var pageTracker = {
	init: function(){	
		function trackIt(linkURL){
			// need to append downloaders to folder directory for google analyptics
			linkURL="/downloaders/"+ linkURL;
			//alert(linkURL); 
			pageTracker._trackPageview(linkURL);
		}
		var trackerlinks = document.getElementsByTagName("a");
		var amended = document.getElementsByTagName("a");
		// loop through each of these links (anchor tags) 	
			for (var i=0; i < trackerlinks.length; i++) {	
			// if the link has a class of "tracker"...	
				if (trackerlinks[i].className == "tracker") {	
				// add an onclick event on the fly to pass the href attribute	
				// of the link to our second function, trackIt	
					trackerlinks[i].onclick = function() {	
					trackIt(this.getAttribute("href"));	
				// return false; removed in order to visit url after calling tracker function	
					} 	
				}
			} 
		}
	}



addDOMLoadEvent(pageTracker.init);

