// Global Variables //

	var _isMoz = (navigator.appName == "Netscape");
	var _isIE = (navigator.appName == "Microsoft Internet Explorer");
	var _isIE6 = (navigator.appVersion.search("MSIE 6.0") != -1);
	var _isSafari = (navigator.userAgent.indexOf("Safari") != -1);
	var _isLoaded = false, _i = _j = _navCount = _subNavCount = _height = 0, _canAni = "show", _animateBy = 40;
	var 
		//Control Height of SubNav on Show //_incArrayMenu = [0,10,17,21,23],
		_incArrayMenu = [0,6,12,18,24],
		 
		//Controls Top Magrin  on Show //_incArrayUL = [57,47,40,36,34], 
		_incArrayUL = [0,6,12,18,24], 
		
		//Controls Height of SubNav on Hide //_incArrayMenuH = [23,21,17,10,0],
		_incArrayMenuH = [24,18,12,6,0], 
		
		//Controls Top Margin  on Hide //_incArrayULH = [34,36,40,47,57];
		_incArrayULH = [24,18,12,6,0];
		
	var _currentPage = "", _timeout = {};

	showHoverInfo = function(){}
	hideHoverInfo = function(){}

	$S = function(_elementID) {
		return ($(_elementID)) ? $(_elementID).style : false;
	}

	// init function //
	init = function() {
		addEvent(onLoad,"load");
	}
	
	within = function(_val,_low,_high) {
		return ((_val >= _low) && (_val <= _high));
	}
	
	// onLoad //
	onLoad = function() {
		var _ypos = new Array();
		var _queryString = window.location.search;
		var _regExp = /ypos=(\d+)/;

		// If the url tells y us to scroll, then do so.
		if (_regExp.test(_queryString)) {
			_ypos = _regExp.exec(_queryString);
			_ypos = parseInt(_ypos[1]);

			if (_ypos > 0) {
				window.scroll(0,_ypos);
			}
		}
		if ($("Radio_BBCode")) {
			$("Radio_BBCode").checked = true;
		}

		try {
			initLightbox();
		} catch (_e) {}

		setNavEvents();

		_isLoaded = true;
	}


	// Show subNav //
	showSubNav = function(_elementID) {
		_wait = 0;
		if (_canAni == "show") {
			$S("navUL").marginBottom = 0;
			if ($("subNavContainer").style.height != (_incArrayMenuH[0] + "px")) {
				// If subNavContainer is closed...
				_canAni = "";
				for (_i=0;_i<_incArrayMenu.length;_i++) {
					//Calls for Animation of Nav through arrays set above (line)
					setTimeout("aniSubNav(" + _incArrayMenu[_i] + "," + _incArrayUL[_i] + ")",(_animateBy * _i));
				}
				$S("subNavContainer").display = "block";
			}
			_wait = (_incArrayMenu.length * _animateBy);
			setTimeout("menuAniStop('hide')",(_wait + 19));
		}

		fadeElement("sub" + _elementID,0);
		for (_i=1;_i<=10;_i++) {
			setTimeout("fadeElement('sub" + _elementID + "'," + _i + ")",(_wait + (_animateBy * _i)));
		}
		highlightNav(_elementID);

		// Close any SubNavs we have open //
		for (_i=0;_i<=_subNavCount;_i++) {
			$S("subNav" + _i).display = "none";
		}
		$S("sub" + _elementID).display = "block";
	}
	
	
	aniSubNav = function(_howMuchMenu,_howMuchUL) {
		$S("subNavContainer").height = ( _howMuchMenu + "px");
		$S("navUL").marginTop = ( "-" +  _howMuchUL + "px");
	}

	// Hide subNav //
	hideSubNav = function() {
		_wait = 0;
		if (_canAni == "hide") {
			if ($S("subNavContainer").height == (_incArrayMenuH[0] + "px")) {
				_canAni = "";
				for (_i=0;_i<_incArrayMenu.length;_i++) {
					setTimeout("aniSubNav(" + _incArrayMenuH[_i] + "," + _incArrayULH[_i] + ")",(_animateBy * _i));
				}
				_wait = (_incArrayMenu.length * _animateBy);
				setTimeout("menuAniStop('show')",(_wait + 19));
			}
		}
	}

	menuOver = function() {
		try {
			clearTimeout(_timeOut);
		} catch(_e) {}
	}

	menuOut = function() {
		_timeOut = setTimeout("hideSubNav(); highlightNav();",750);
	}

	// Called when the menu is done animating [either up or down]
	menuAniStop = function(_showHide) {
		_canAni = _showHide;
	}

	// Highlight whatever _elementID is passed //
	highlightNav = function(_elementID) {
		// Clear any Nav Anchors we have higlighted //
		for (_i=0;_i<=_navCount;_i++) {
			// See .nav li a in ./global.css for values //
			$S("Nav" + _i).background = "";
			$S("Nav" + _i).color = "#FFF";
		}
		if (_elementID) {
			// See .nav li a:hover in ./global.css for values //
			$S(_elementID).background = "#FFF";
			$S(_elementID).color = "#999";
		}
	}

	// Fades _elementID to _opacity, called from timeouts //
	fadeElement = function(_elementID,_opacity) {
		// Safari seems to think it's funny to throw a moueover event when you move your mouse, so this will flicker: //
		if (_isIE) {
			$(_elementID).style.filter = "alpha(opacity=" + (_opacity * 10) + ")";
		} else if (_isMoz) {
			$(_elementID).style.MozOpacity = (_opacity / 10);
			$(_elementID).style.opacity = (_opacity / 10);
		}
	}

	swapImage = function(_elementID,_src) {
		var _element = "";
		if (_element = _src.match(/(.+)_off\.png$/)) {
			$(_elementID).src = _element[1] + "_on.png";
		} else {
			$(_elementID).src = _src.match(/(.+)_on\.png$/)[1] + "_off.png";
		}
	}

	toggleDisplay = function(_elementIDs,_flow) {
		if (_elementIDs.constructor != Array) {
			_elementIDs = [_elementIDs];
		}
		for (_i=0;_i<_elementIDs.length;_i++) {
			$(_elementIDs[_i]).style.display = (_flow) ? _flow : "none";
		}
	}
	
	// Manage events //
	addEvent = function(_function,_event) {
		if ((document.all) && (window.attachEvent)) {
			window.attachEvent("on" + _event,_function);
		} else if (window.addEventListener) {
			window.addEventListener(_event,_function,false);
		}
	}

	init();